Имеется эллипс(круг), который ограничен прямоугольником EllipseRect. Требуется заполнить множество S точками, которые принадлежат этому кругу(лежат внутри). Для этого использую следующий код:
| Код |
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;
|
Данный код работает верно, только тогда, когда EllipseRect.Top=EllipseRect.Left. В чем прикол ??? |