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

Вниз

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

 
Antonmm   (2004-09-08 21:18) [0]

Как нарисовать на desktope какую-нибудь фигуру?(Например : круг)


 
olookin ©   (2004-09-08 21:20) [1]

Получить хэндл десктопа  рисовать?

GetDC и Draw?


 
wl   (2004-09-08 21:57) [2]

affaik, hwnd десктопа равно нулю, может я и не прав конечно...


 
oookin   (2004-09-08 22:22) [3]

[2] wl   (08.09.04 21:57)

Я и сам не знаю... Но казалось бы хэндл десктопа не должен был бы быть равен нулю..


 
wl   (2004-09-08 22:39) [4]


var
 dc: HDC;
begin
 dc := GetDC(0);
 if(dc)then
    LineTo(dc,800,600);
end;

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


 
wl   (2004-09-08 22:41) [5]

хых, а также поверх всех окон...
ерунда какая-то


 
Mihey_temporary ©   (2004-09-08 23:45) [6]


> wl   (08.09.04 22:39) [4]


Надо добавить ReleaseDC(0, DC)


 
Gero ©   (2004-09-09 00:11) [7]

GetDesktopWindow


 
Александр1   (2004-09-09 07:35) [8]

procedure TForm1.Button1Click(Sender: TObject);
var dtC:TCanvas;
begin
dtC:=TCanvas.Create;
//Устанавливаем связь с рабочим столом
dtC.Handle:=GetDC(Hwnd_Desktop);
dtC.Font.Size:=20;
dtC.TextOut(200,400,"Привет!");
//Разрыв связи  между dtC и рабочим столом
ReleaseDC(dtC.Handle, Hwnd_Desktop);
dtC.Free;
end;
Рисовать аналогично. Пеши dtC.LineTo(800,600); и т.д.

Так например можно вывести на рабочий стол рисунок.
procedure TForm1.Timer1Timer(Sender: TObject);
var dtC:TCanvas;
Ris:TBitmap;
begin Randomize;
//x:=x+1;
Ris:=TBitmap.Create;
dtC:=TCanvas.Create;
dtC.Handle:=GetDC(Hwnd_Desktop);
dtC.Font.Size:=20;
dtC.TextOut(200,400,"wsdwdwewewe");
Ris.LoadFromFile("1.bmp");
dtC.Draw(Random(600),Random(600),Ris);
Ris.Free;
ReleaseDC(dtC.Handle, Hwnd_Desktop);
dtC.Free;

end;


 
kaZaNoVa   (2004-09-09 08:57) [9]

а зачем ReleaseDC(0, DC)  ?
у меня и без него прекрасно работает!


 
KSergey ©   (2004-09-09 08:59) [10]

> [9] kaZaNoVa   (09.09.04 08:57)
> а зачем ReleaseDC(0, DC)  ?
> у меня и без него прекрасно работает!

Без Free тоже прекрасно работает ;)
На кой его эти умники пишут?


 
TUser ©   (2004-09-09 11:01) [11]

> а зачем ReleaseDC(0, DC)  ?
у меня и без него прекрасно работает!

Не надо зря юзать ресурс. Не нужен - освободи.


 
KSergey ©   (2004-09-09 11:09) [12]

>  [11] TUser ©   (09.09.04 11:01)
> > а зачем ReleaseDC(0, DC)  ?
> у меня и без него прекрасно работает!
>
> Не надо зря юзать ресурс. Не нужен - освободи.

А для меня это до сих пор больной вопрос: надо или нет.
Вот в дельфийской справке по TCanvas.Handle его нет. Единственный источник, котоорому вроде можно доверять. Более ничего авторитетного, указывающего на его необходимость/не обязательность использования не нашел.

PS
Разумеется, это все в разрезе такого шаблона:

c := TCanvas.Create;
c.Handle := GetDC(...);
...
c.Free;


Если же речь о GetDC(...) и далее WinAPI - тогда понятно вопроса о том вызывать/не вызывать ReleaseDC не возникает.


 
KSergey ©   (2004-09-09 11:10) [13]

> [12] KSergey ©   (09.09.04 11:09)
> Вот в дельфийской справке по TCanvas.Handle его нет.

Имелось в виду - в приведенном там примере.



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

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

Наверх




Память: 0.49 MB
Время: 0.025 c
1-1095074202
kolos_rus
2004-09-13 15:16
2004.09.26
Глобальная переменная


1-1094564573
Vadim Mazein
2004-09-07 17:42
2004.09.26
Измерение скорости выполнения программ.


14-1094813074
Hint
2004-09-10 14:44
2004.09.26
Проблема с компьютером


1-1094797100
DesWind
2004-09-10 10:18
2004.09.26
Изменение имен компонентов


14-1094646360
1008
2004-09-08 16:26
2004.09.26
Не подскажите с переносом данных?