![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с Bitmap [Delphi, Windows]
ASilver © (2003-09-29 13:20:00)Почему bitblt с PBitamp размером 600x800 занимает времени больше 1 секунды. Как лечить.
ASilver (2003-10-07 12:40:00) [1]Ok. Всё работает нормально. Извиняюсь за глупый вопрос.
miek (2003-10-01 22:10:00) [2]А вот и он, больной зуб!
Bitmap.PixelFormat := pfCustom;
Смени на что-нибудь определенное. pf32bit, например.
ASilver (2003-10-01 12:41:00) [3]procedure TForm1.SPLPicture1Click(Sender: PObj);
var
DC: HDC;
Bitmap : PBitmap;
begin
Bitmap := NewBitmap(800,600);
Bitmap.PixelFormat := pfCustom;
DC := GetDC( 0 );
BitBlt(Bitmap.Canvas.Handle,0,0,800,600,DC,0,0,SRCCOPY );
....
Bitmap.Free;
end;
miek (2003-09-30 20:20:00) [4]Весь код в студию. Товарищ правильно говорит - должно все работать нормально.
SPeller (2003-09-30 15:30:00) [5]ЗЫ: В компонент предварительно был вставлен скриншот рабочего стола размером 800х600.
SPeller (2003-09-30 15:28:00) [6]Странно, у меня такой код:
procedure TForm1.SPLPicture1Click(Sender: PObj);
var DC: HDC;
begin
DC := GetDC( 0 );
// BitBlt( DC, 0, 0, 800, 600, SPLPicture1.Bitmap.Canvas.Handle, 0, 0, SRCCOPY );
BitBlt( SPLPicture1.Bitmap.Canvas.Handle, 0, 0, 800, 600, DC, 0, 0, SRCCOPY );
end;
Работает мгновенно в обоих случаях. Может, у тебя формат битмапа не совпадает с тем, что на экране, и время тратится на преобразование?
ASilver (2003-09-30 14:31:00) [7]DC := GetDC(0);
bitblt(btm.canvas.handle,0,0,800,600,DC,0,0,SRCCOPY);
miek (2003-09-29 19:58:00) [8]Код в студию
SPeller (2003-09-29 17:15:00) [9]
> bitblt с PBitamp размером 600x800 занимает времени
> больше 1 секунды
А это как?