Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.30;
Скачать: CL | DM;

Вниз

Как побороть мерцание?   Найти похожие ветки 

 
Dankin ©   (2003-07-01 03:28) [0]

Люди, подскажите как побороть мерцание.

В программе при нажатии на кнопку весь экран
копируется битмап и помещается в ТИмадж на
форме которая только после этого становится
видимой. Все это дело мерцает как при появлении
формы так и при ее изчезновении.
Вообщем на функциональность не влияет, но
нервирут дай боже. Помогите решить проблему.


 
Леприкон ©   (2003-07-01 07:44) [1]

procedure TForm1.Button1Click(Sender: TObject);
var DC:HDC;
procedure TForm1.Button1Click(Sender: TObject);
var DC:HDC;
Canv:TCanvas;
begin
DC:=GetDC(0);
Canv:=TCanvas.Create;
Canv.Handle:=DC;

BitBlt(Form2.Image1.Canvas.Handle,
0,
0,
Form2.Image1.ClientWidth,
Form2.Image1.ClientHeight,Canv.Handle,
0,
0,
srccopy);

Canv.Destroy;
ReleaseDC(Handle,DC);
Form2.Show;
end;

//*******************
procedure TForm2.FormCreate(Sender: TObject);
begin
DoubleBuffered:=true;
end;

А зачем тебе нужен битмап?


 
Dankin ©   (2003-07-02 02:17) [2]

Нужен, чтобы можно было узнать цвет любой точки на экране. Без формы с картинкой впринципи знаю как, кто-то подсказал getpixel(getDC(0),mouse.cursorpos.x,mouse.cursorpos.y); но при этом способе возникает вопрос как подавить активность десктопа на нажатия мышки, и почемуто если долго водить мышой по экрану через какоето время прога начинает тормозить, причем не по детски.
Впринцепи мерцание удается подавить использовав
image.parent.doblebuffer:=true;
но эта фенька срабатывает только при первом запуске функции, если грубо говоря, пользователь активизировал процесс еще раз то программа опять начинат тормозить. Может кто знает как побороть это?


 
Думкин ©   (2003-07-02 05:05) [3]

В точности твою траблу не знаю - потому как инфы нет. Но попробую разобраться в 17-й строке.
При отрисовке не пользуй GetDC.
Делай в такой обертке:

procedure TMyForm.WMPaint;
var
ps : TPaintStruct;
DC : HDC;
begin
inherited;
DC := BeginPaint(Handle, ps);
.....
( Handle, ps)
В точности твою траблу не знаю - потому как инфы нет. Но попробую разобраться в 17-й строке.
При отрисовке не пользуй GetDC.
Делай в такой обертке:

procedure TMyForm.WMPaint;
var
ps : TPaintStruct;
DC : HDC;
begin
inherited;
DC := BeginPaint(Handle, ps);
.....
EndPaint(Handle, ps)
end;


В 99,999% случаев все тормоза снимаются. Так кстати и предложено папами и мамами. %-)



Страницы: 1 вся ветка

Текущий архив: 2003.10.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
3-98518
rosl
2003-10-09 08:29
2003.10.30
Strtocurr


6-98757
TButton
2003-09-03 17:55
2003.10.30
ЛАН


1-98586
slap
2003-10-20 08:54
2003.10.30
BeginThread


4-98939
w666w
2003-08-27 19:15
2003.10.30
Как установить 2 разных иконки для приложения (32х32) и (16х16)


1-98692
Dementiy
2003-10-20 19:03
2003.10.30
Indy TCPClient