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

Вниз

перерисовка экрана   Найти похожие ветки 

 
gefest80   (2008-03-28 17:42) [0]

такая проблема, в определенном месте экрана (вне формы) выводится постоянно меняющийся текст. Как сделать так, чтобы текст не накладывался друг на друга. Я так понимаю нужно переодически перерисовывать область экрана, на которой выводится текст. Как можно это осуществить?


 
Eraser ©   (2008-03-28 17:49) [1]

invalidateRect


 
gefest80   (2008-03-28 18:36) [2]

Я может что-то не так делаю, но invalidateRect не работает. Подскажите что именно.
вот кусок кода вывода текста:

 Rec:=Rect(100,100,500,200);
 invalidateRect(can.Handle,@Rec,false);
 OldBkMode := SetBkMode(can.Handle, Transparent);
 can.TextOut(100,100,inttostr(X)+":"+inttostr(Y));
 SetBkMode(can.Handle, OldBkMode);


 
tesseract ©   (2008-03-28 19:55) [3]


>  invalidateRect(can.Handle,@Rec,false);


а can это канва за пределами формы ?  И как это ты текст за пределами выводишь ?


 
gefest80   (2008-03-28 20:22) [4]

да can - это дескриптор всего экрана
объявлял так:
 can:=TCanvas.Create;
 with can do
 begin
   Handle:=getdc(0);
   font.Color:=clLime;
   Font.Name:="Tempus Sans ITC";
   can.Font.Size:=72;
 end;
а вывод текста прямо функцией
can.TextOut(100,100,"TEXT");


 
tesseract ©   (2008-03-28 20:27) [5]

а напрмую в DC выводить ? дескриптора экрана не существует, ты выводишь на desktop. А он нижлежащее окно.


 
gefest80   (2008-03-28 20:33) [6]

Ну проблема не с выводом изображениия, а с тем чтобы оно не накладывалось друг на друга и было читаемо. Вот тут советовали использовать invalidateRect, но не работает.


 
tesseract ©   (2008-03-28 20:51) [7]

естесвенно, GetDC(0) выдаёт дескриптор рабочего стола, лучше выведи окно, которое по необходимости перерисовываеться.


>  а с тем чтобы оно не накладывалось друг на друга и было
> читаемо


А ты заполнять предидущий вывод FillRect не пробовал ? TextOut не перерисовывает облать окна которая его не касаеться.  InvalidateRect выведет тебе canvas - только то что нарисовад TextOut  поверх уже выведенного изображения.


 
gefest80   (2008-03-28 21:09) [8]

Воощем проблема такая, нужно сделать таймер, чтобы он всегда был поверх всех окон. Установка свойства окна StayOnTop не помогает. Так как планируется использовать таймар, например, при просмотре презентаций PowerPoint.
Лучшего варианта, чем выводить прямо на десктоп я не нашел.
FillRect не устраивает, так как слишком большая область экрана при этом остается закрашеной.
Пробовал просто перед началом вывода текста копировать область фона и затем потом выводить текст на него и уже с текстом возвращать его на экран. Но возникает другая проблема, как быть если изображение на десктопе меняется (старый фон уже не катит)....


 
MetalFan ©   (2008-03-28 22:26) [9]


>  Handle:=getdc(0);

ReleaseDC то потом надеюсь делается?


 
tesseract ©   (2008-03-29 15:42) [10]


> FillRect не устраивает, так как слишком большая область
> экрана при этом остается закрашеной.



> . Но возникает другая проблема, как быть если изображение
> на десктопе меняется (старый фон уже не катит)....


Хапать старый фон, выводить свой, при перерисовке выводить обратно, было решение - сейчас не помню.


 
{RASkov} ©   (2008-03-29 16:25) [11]

Если фон действительно статичен, т.е. по этому месту не елозят никакие окна там например, или еще что, а только обновляется наша инфа, то есть решение... с "кусочком старого фона" во временном битмапе.... при выводе "нашей" инфы, сначало "затирать" участок старым фоном, и сверху выводить инфу...



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

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

Наверх




Память: 0.49 MB
Время: 0.022 c
2-1206961815
Mishenka
2008-03-31 15:10
2008.04.27
Динамическое зменение события у компонентов, помещаемых на форму?


2-1207048940
Mishenka
2008-04-01 15:22
2008.04.27
Перемотка текста в RichEdit


15-1204276172
Kerk
2008-02-29 12:09
2008.04.27
Кто-нибудь знаком с расширение ICQ-протокола: T-ZER ?


2-1207076153
i
2008-04-01 22:55
2008.04.27
Overflow...


15-1205341451
Пробегал2...
2008-03-12 20:04
2008.04.27
out/var vs Pointer ;)