Ellipse

  • Автор темы Codekid
  • Дата начала
Статус
Закрыто для дальнейших ответов.
C

Codekid

#1
Вот возник вопрос как поместить Ellipse на центр экрана, и сделать его красным...

var
screendc:hdc;
begin
screendc := getdc(0);
Ellipse(screendc,190,190,200, 200,);
releasedc(0,screendc);
end;


кто знает?plz help
 
Z

zubr

#2
В Delphi есть глобальная переменная Screen класса TScreen, а у этого класса есть свойства WorkAreaRect, ...Left, ...Top, ...Width, ...Height, показывающие рабочую область экрана. Так вот, пользуясь свойствами этой переменной можно определить центр экрана.
Для цвета - создаем кисть красного цвета функциеей CreateBrush, затем для контекста экрана выбираем эту кисть функцией SelectObject, после этого вызываем функцию Ellipse. После всего не забываем контексту экрана вернуть старую кисть и удалить созданную кисть.
 
C

Codekid

#3
вот возник новый вопрос:


begin
while true do
begin
SelectObject(ScreenDC,BrushHandle);
ScreenDC := GetDC(0);
PenHandle := CreatePen(PS_SOLID, 1, clRed);
OldPenHandle := SelectObject(ScreenDC, PenHandle);
Ellipse (screendc, 645,515,Screen.Width div 2,Screen.Height div 2);
ReleaseDC(0,ScreenDC);
sleep (10);

Во время работы гаснит красный цвет, и остается толка ellipse....
Почему? и как исправить чтобы цвет оставался а не терялся....
 
Z

zubr

#5
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
screendc:hdc;
PenHandle, OldPenHandle, OldBrush, BrushHandle:cardinal;
begin
while true do
begin
BrushHandle:=CreateSolidBrush(clRed);
ScreenDC := GetDC(0);
OldBrush:=SelectObject(ScreenDC,BrushHandle);
PenHandle := CreatePen(PS_SOLID, 1, clRed);
OldPenHandle := SelectObject(ScreenDC, PenHandle);
Ellipse (screendc, 645,515,Screen.Width div 2,Screen.Height div 2);
SelectObject(ScreenDC, OldBrush);
SelectObject(ScreenDC, OldPenHandle);
ReleaseDC(0,ScreenDC);
DeleteObject(BrushHandle);
DeleteObject(OldPenHandle);
sleep (10);
Application.ProcessMessages;
end;
end;
 
Статус
Закрыто для дальнейших ответов.