Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.015 c
1-98570
lasso
2003-10-20 11:58
2003.10.30
help


1-98545
AlexanderSK
2003-10-17 15:37
2003.10.30
DataSnap (midas) - отключение клиента от сервера


14-98862
lak
2003-10-11 00:51
2003.10.30
пять баллов! орех рулит!


1-98719
LINK_‡)
2003-10-09 07:16
2003.10.30
ListBox=>Items=>Random=>?


3-98431
Praco
2003-10-08 15:52
2003.10.30
ADO + DBF = ужасно медленно




   Наверх