Главная страница
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.061 c
1-1094563054
debuger
2004-09-07 17:17
2004.09.26
Отладка.


1-1093771437
Matrex
2004-08-29 13:23
2004.09.26
Как запретить выделение текста в WebBrowser?


14-1094740724
ssnvit
2004-09-09 18:38
2004.09.26
Программа не дает в Windows98 переключить раскладку клавиатуры


3-1093964749
Morrison
2004-08-31 19:05
2004.09.26
Как изменить структуру таблицы (програмно)?


1-1094819915
vigo
2004-09-10 16:38
2004.09.26
Формат времени DateTimePicker