информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 На GitHub пугают ложными предупреждениями... 
 Атака на пользователей больших... 
 Notepad++ полгода раздавал зараженные... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Pixels[][] (Borland C++ Builder) 23.04.02 02:00  Число просмотров: 1224
Автор: vagrant Статус: Незарегистрированный пользователь
<"чистая" ссылка>

Во-первых непонятно, зачем тебе столько Application->ProcessMessages();?
Функция может виснуть только от этого миллиона вызовов проверки событий в программе. Ведь сам про себе код совершенно безобиден, на любом компе должен идти доли секунды.
Разве только после BMP->LoadFromFile(str); его воткнуть.
А если функция выполняется не дольше секунды, то и прерывать ее бессмысленно.
А во-вторых по фрагменту непонятно, зачем в этой же функции все рисовать? Если ты и поменял фон (или что там) в картинке, то ее же все равно придется перерисовывать после перекрытия, так что отрисовку имеет смысл куда-то выкинуть.
В третьих, насколько я помню точечная функция очень тормозная вообще всегда!! Проще создать белый битмап того же размера, что и исходный и напрямую их умножить, именно как два объекта.
<programming>
[C++] Pixels[][] (Borland C++ Builder) 19.04.02 18:31  
Автор: tori Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Люди, помогите!!! Есть следующее:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Graphics::TBitmap *BMP = new Graphics::TBitmap();
int PicArray [1000][1000];
BMP->LoadFromFile(str);

for(int i=0; i<BMP->Width; i++) {
for(int j=0; j<BMP->Height; j++) {
PicArray[i][j] = (BMP->Canvas->Pixels[i][j])&255;
Application->ProcessMessages();
}
}

Image1->Canvas->Draw(0,0,BMP);
}

Все тормозит. Подскажите (фрагмент кода, если можно):
1) Как сделать загрузку имиджа в двумерный массив быстрее?
2)Как завершить работу программы? Как я понял, из-за ProcessMessages она выходит только по exit(1), обычное Application->Terminate() не пашет. :(
[C++] Pixels[][] (Borland C++ Builder) 23.04.02 02:00  
Автор: vagrant Статус: Незарегистрированный пользователь
<"чистая" ссылка>

Во-первых непонятно, зачем тебе столько Application->ProcessMessages();?
Функция может виснуть только от этого миллиона вызовов проверки событий в программе. Ведь сам про себе код совершенно безобиден, на любом компе должен идти доли секунды.
Разве только после BMP->LoadFromFile(str); его воткнуть.
А если функция выполняется не дольше секунды, то и прерывать ее бессмысленно.
А во-вторых по фрагменту непонятно, зачем в этой же функции все рисовать? Если ты и поменял фон (или что там) в картинке, то ее же все равно придется перерисовывать после перекрытия, так что отрисовку имеет смысл куда-то выкинуть.
В третьих, насколько я помню точечная функция очень тормозная вообще всегда!! Проще создать белый битмап того же размера, что и исходный и напрямую их умножить, именно как два объекта.
[C++] Pixels[][] (Borland C++ Builder) 23.04.02 03:32  
Автор: tori Статус: Незарегистрированный пользователь
<"чистая" ссылка>
А можно немного подробнее ?
Сталкивались... 20.04.02 02:40  
Автор: Korsh <Мельников Михаил> Статус: Elderman
Отредактировано 20.04.02 02:45  Количество правок: 2
<"чистая" ссылка>
Но я не использовал 2-Д массивы
на кой хрен они нужны когда у тебя уже битмап готовый
с ним работать гораздо быстрее можно
[C++] Pixels[][] (Borland C++ Builder) 20.04.02 00:01  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
> Люди, помогите!!! Есть следующее:
>
> void __fastcall TForm1::Button1Click(TObject *Sender)
> {
> Graphics::TBitmap *BMP = new Graphics::TBitmap();
> int PicArray [1000][1000];
> BMP->LoadFromFile(str);
>
> for(int i=0; i<BMP->Width; i++) {
> for(int j=0; j<BMP->Height; j++) {
> PicArray[i][j] =
> (BMP->Canvas->Pixels[i][j])&255;
> Application->ProcessMessages();
> }
> }
>
> Image1->Canvas->Draw(0,0,BMP);
> }
>
> Все тормозит. Подскажите (фрагмент кода, если можно):
> 1) Как сделать загрузку имиджа в двумерный массив быстрее?
> 2)Как завершить работу программы? Как я понял, из-за
> ProcessMessages она выходит только по exit(1), обычное
> Application->Terminate() не пашет. :(

Zovesh eto Foo:

GetDIBits(
HDC hdc, // handle to DC
HBITMAP hbmp, // handle to bitmap
UINT uStartScan, // first scan line to set
UINT cScanLines, // number of scan lines to copy
LPVOID lpvBits, // array for bitmap bits
LPBITMAPINFO lpbi, // bitmap data buffer
UINT uUsage // RGB or palette index
);


potom copyruesh dannye is lpvBits

Tolko ne ponimau zachem tebe bitmap v 2-D massive ??
[C++] Pixels[][] (Borland C++ Builder) 19.04.02 22:10  
Автор: tori Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Никто с подобным не сталкивался, чтоль? :(
[C++] Pixels[][] (Borland C++ Builder) 20.04.02 07:41  
Автор: tori Статус: Незарегистрированный пользователь
<"чистая" ссылка>
А можно ли с помощью BitBlt все это делать?
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach