Форум: "Основная";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
ВнизРисование на экране Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c