Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Media";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.011 c
1-98584
Dim!S
2003-10-20 09:57
2003.10.30
Определение usb-накопителя


1-98547
Замученный
2003-10-20 15:32
2003.10.30
Как начертить график


14-98832
AlexKniga
2003-10-10 16:23
2003.10.30
WAP порталы


11-98534
Фдучфтвук
2003-02-09 14:27
2003.10.30
[Delphi6] чтение секторов с дискеты


7-98900
Е-Моё имя
2003-08-17 18:41
2003.10.30
GetProcAddress и kernel32.dll





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский