![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Непонятная особенность в работе кода [D7, WinXP]
Angakok © (2007-04-19 20:59:00)Имеется эллипс(круг), который ограничен прямоугольником EllipseRect. Требуется заполнить множество S точками, которые принадлежат этому кругу(лежат внутри). Для этого использую следующий код:
[code]
TMyPoint = class
public
x: Integer;
y: Integer;
constructor Create(tX: Integer; tY: Integer);
end;
...
constructor TMyPoint.Create(tX: Integer; tY: Integer);
begin
x := tX; y := tY;
end;
...
S: DSet;
EllipseRect: TRect;
j,k: Integer;
Rgn: HRGN;
...
Rgn := CreateEllipticRgnIndirect(EllipseRect);
if Rgn <> 0 then
try
for j := EllipseRect.Top to EllipseRect.Bottom do
for k := EllipseRect.Left to EllipseRect.Right do
if PtInRegion(Rgn,j,k) then
S.add([TMyPoint.Create(j,k)]);
finally
DeleteObject(Rgn);
end;
[/code]
Данный код работает верно, только тогда, когда EllipseRect.Top=EllipseRect.Left.
В чем прикол ???
Angakok (2007-04-20 01:29:00) [1]
> Может быть...if PtInRegion(Rgn,k,j) then
> S.add([TMyPoint.Create(k,j)]);???
Точняк !!!!!!!! Это ведь координаты !!!!!! Работает!!!!
Спасибо !!!!!!!!!!!!!!
Vovan #2 (2007-04-19 22:55:00) [2]Может быть...
if PtInRegion(Rgn, k,j) then
S.add([TMyPoint.Create( k,j)]);
???