Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Есть две BMP'шки  и TImage.....


Автор: Sniper 10.6.2002, 22:33
Короче так... вот есть две картинки... и такая проблема...
Сначала рисуется одна картинка в TImage, а при наведении мыши вместо этой картинки должна нарисоваться другая..... всё работает.... только как это проделать быстрее, что бы не было видно мерцания? Может есть другие методы решения проблемы..... посоветуйте..... :-)

Автор: Vit 10.6.2002, 23:08
OpenGL, DirectX и т.п. методы быстрой работы с графикой...

Автор: Baa 10.6.2002, 23:51
Кстати, можно создать контекст в памяти, а лучше 2 и менять их местами, а не згрузить бмпшки ( сначала надо скопировать бмпшки в эти контексты )

Автор: Song 11.6.2002, 07:17
Parent.DoubleBuffered:=True
поможет но не сильно.

Автор: Sniper 11.6.2002, 18:57
Цитата(Vit @ 11.6.2002, 00:08)
OpenGL, DirectX и т.п. методы быстрой работы с графикой...

;-))

Vit,  меня чё-то не радует для этого создавать контекст OpenGL.... и уж тем более в Direct'е:-)))

Хорошо...(поставлю вопрос прямо...) как тогда в Q3 менюха сделана?

Автор: Baa 11.6.2002, 19:33
Вот, вроде нормально работает...
Код

procedure TForm1.Panel1Click(Sender: TObject);
var
 FirstDC,
 SecondDC,
 CurrDC       : HDC;

 FirstBitmap,
 SecondBitmap : HBITMAP;
begin
 CurrDC   := GetDC(Panel1.Handle);
 FirstDC  := CreateCompatibleDC(CurrDC);
 SecondDC := CreateCompatibleDC(CurrDC);

 FirstBitmap  := Image1.Picture.Bitmap.Handle;
 SecondBitmap := Image2.Picture.Bitmap.Handle;

 SelectObject(FirstDC, FirstBitmap);
 SelectObject(SecondDC, SecondBitmap);

 BitBlt (CurrDC, 0, 0, 256, 256, FirstDC, 0, 0, SRCCOPY );
 Sleep  (1000);
 BitBlt (CurrDC, 0, 0, 256, 256, SecondDC, 0, 0, SRCCOPY );

 ReleaseDC(Panel1.Handle, CurrDC);

 DeleteDC(FirstDC);
 DeleteDC(SecondDC);

 DeleteObject(FirstBitmap);
 DeleteObject(SecondBitmap);
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)