![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Canvas. Помогите разобратся. [D7, Win2k, WinXP]
CAMCOH © (2004-08-17 14:44:00)Есть процедура
procedure WriteDC(s: string);
var
c: TCanvas;
begin
c := TCanvas.Create;
c.Brush.Color := clBlack;
c.Font.color := clRed;
c.Font.size := 25;
c.Font.name := 'Fixedsys';
c.Handle := GetDC(GetWindow(GetDesktopWindow, GW_OWNER));
c.TextOut(0,0, s);
c.free;
end;
которая выводит на экран текст.
Вопрос в том как после этого вернуть экран в исходное состояние.
KSergey (2004-08-19 13:16:00) [1]> [2] Григорьев Антон © (17.08.04 14:56)
> Кстати, перед c.Free надо сделать c.Handle:=0.
А вот тут я бы посомневался...
destructor TCanvas.Destroy;
begin
CanvasList.Remove(Self);
SetHandle(0);
.....
end;
А вот надо ли делать ReleaseDC - вот это вопрос... В одной ветке уже написал, что не знаю не него ответа и найти не могу... Может тут кто скажет
RaPToR_1 (2004-08-19 12:46:00) [2]_
RaPToR_1 (2004-08-17 16:51:00) [3]по ходу транслит наверное не понимают...
переведу...
кто это уже делал...подскажите... потому что выставляю я координаты и не получаеться обновить именно ту часть экрана
как правильно выставить?
CAMCOH (2004-08-17 16:02:00) [4]i kak eti koordinati zadavat' mozhno na primere ?
ламер (2004-08-17 15:56:00) [5]> RaPToR_1 (17.08.04 15:48) [7]
BOOL InvalidateRect(
HWND hWnd, // handle of window with changed update region
CONST RECT *lpRect, // address of rectangle coordinates
BOOL bErase // erase-background flag
);
Parameters
lpRect - Points to a RECT structure that contains the client coordinates of the rectangle to be added to the update region. If this parameter is NULL, the entire client area is added to the update region.
RaPToR_1 (2004-08-17 15:48:00) [6]
> InvalidateRect(GetDlgItem(GetDC(GetWindow(GetDesktopWindow,
> GW_OWNER)),0),nil,falsE);
так получаеться сумасшедшее обновление всех окон.. а можно как то обновить только ту часть экрана, на которой рисовал?
Григорьев Антон (2004-08-17 15:31:00) [7]
> RaPToR_1 (17.08.04 15:28) [5]
> а как сделать надпись тока чтобы фона не было?
SetBkMode(c.Handle,Transparent);
RaPToR_1 (2004-08-17 15:28:00) [8]ура нашел)
InvalidateRect(GetDlgItem(GetDC(GetWindow(GetDesktopWindow, GW_OWNER)),0),nil,falsE);
а как сделать надпись тока чтобы фона не было?
RaPToR_1 (2004-08-17 15:10:00) [9]InvalidateRect а как именно ее юзать?)
CAMCOH (2004-08-17 14:59:00) [10]a kakie parametri pisat' ?
Григорьев Антон (2004-08-17 14:56:00) [11]Кстати, перед c.Free надо сделать c.Handle:=0.
ламер (2004-08-17 14:50:00) [12]InvalidateRect()