Главная страница
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.021 c
1-98676
Eugene_29
2003-10-20 19:25
2003.10.30
Поле ввода фикс. размера с автомат. изменяющимся размером шрифта


14-98863
VDen
2003-10-10 21:02
2003.10.30
SSI-переменные и Апач


9-98420
Gayrus
2003-03-24 04:43
2003.10.30
Software рендеринг


1-98629
vovan
2003-10-17 14:32
2003.10.30
Delphi-5, TToolBar и WinXP


8-98743
Knauf
2003-07-02 08:22
2003.10.30
Помогите защитить AVI файл от редактирования, монтажа