1.2.7. ΠΡΠΈΠΌΠ΅Ρ GDIDraw
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° GDIDraw Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ GDI, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ TCanvas. ΠΡΠ±ΡΠ°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² Windows NT/2000/XP, Π½ΠΎ ΠΈ Π² 9x/ME. ΠΠΊΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡ. 1.11.
Π ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΡΡΠ½ΠΎΠΊ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Delphi, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΡΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π² ΠΏΠ°ΠΏΠΊΡ "Π‘:\Program Files\Common Files\Borland Shared\Images". ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΡΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π² Π΄ΡΡΠ³ΡΡ ΠΏΠ°ΠΏΠΊΡ, ΠΈΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΡΡΠ½ΠΎΠΊ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ OnCreate ΡΠΎΡΠΌΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π·Π°Π³ΡΡΠΆΠ°Π» ΡΠΈΡΡΠ½ΠΎΠΊ ΠΈΠ· Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Π²Π°ΠΌ ΡΠ°ΠΉΠ»Π°. ΠΠ°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΡΠΈΡΡΠ½ΠΎΠΊ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠΎΠ»Π΅ FBitmap ΡΠΎΡΠΌΡ.
Π ΠΈΡ. 1.11. ΠΠΊΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ GDIDraw
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ OnPaint ΡΠΎΡΠΌΡ. ΠΡ Π·Π΄Π΅ΡΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡ ΡΡΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π΅ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, Π° ΠΏΠΎ ΡΠ°ΡΡΡΠΌ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΠ°ΡΡΡ ΡΠΈΡΡΠ΅Ρ. ΠΠ°ΡΠ½Π΅ΠΌ Ρ Π½Π°Π΄ΠΏΠΈΡΠΈ Delphi Kingdom Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ ΠΎΠΊΠ½Π° (Π»ΠΈΡΡΠΈΠ½Π³ 1.34).
ΠΠΈΡΡΠΈΠ½Π³ 1.34. ΠΡΠ²ΠΎΠ΄ Π½Π°Π΄ΠΏΠΈΡΠΈ Delphi Kingdomvar
R: TRect;
...
// Π€ΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΡΠ΅Π³ΠΈΠΎΠ½, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉΡΡ Π΄Π»Ρ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ.
// Π€ΠΎΡΠΌΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π°, Π° ΠΏΡΠΈ
// Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠ°Π½Π΅Π΅. ΠΠΎΠ»Π΅ FRgn
// ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΡΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π°
if FRgn = 0 then
begin
Canvas.Font.Name := 'Times New Roman';
Canvas.Font.Style := [fsBold];
Canvas.Font.Height := 69;
// ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ. ΠΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ
// Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠ΅ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ BeginPath
// ΠΈ EndPath, Π½Π΅ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ Π½Π° ΡΠΊΡΠ°Π½.
// ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠΈΡΡΠ΅ΡΡΡ, Π±ΡΠ΄Π΅Ρ
// ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ GDI - ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ.
BeginPath(Canvas.Handle);
R := Rect(10, 10, 10 + FBitmap.Width, 10 + FBitmap.Height);
// ΠΡΠ»ΠΈ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ SetBkMode ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ
// ΡΠΎΠ½, Π² ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ ΠΏΠΎΠΏΠ°Π΄ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΡΡΡ Π±ΡΠΊΠ²,
// Π½ΠΎ ΠΈ ΠΊΠΎΠ½ΡΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΠΈΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΡ Π·Π½Π°ΠΊΠΎΠΌΠ΅ΡΡ.
SetBkMode(Canvas.Handle, TRANSPARENT);
// ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅ΠΊΡΡ "Delphi Kingdom", Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Ρ Π΅Π³ΠΎ ΠΏΠΎ
// ΡΠ΅Π½ΡΡΡ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ ΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ.
DrawText(Canvas.Handle, 'Delphi'#13#10'Kingdom', -1, R,
DT_CENTER or DT_VCENTER);
EndPath(Canvas.Handle);
// ΠΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΠΌ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ Π² ΡΠ΅Π³ΠΈΠΎΠ½. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠ·ΠΎΠ²Π°
// ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠ΅Π³ΠΈΠΎΠ½, ΠΊΠΎΠ½ΡΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ
// ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΊΠΎΠ½ΡΡΡΠ°ΠΌΠΈ Π½Π°Π΄ΠΏΠΈΡΠΈ "Delphi Kingdom",
// ΡΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ ΡΡΠΈΡΡΠΎΠΌ.
FRgn := PathToRegion(Canvas.Handle);
end;
// Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ΅Π³ΠΈΠΎΠ½ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΡΠ΅, ΡΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ
// ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ ΡΠ΅Π³ΠΈΠΎΠ½, ΠΏΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ Π±ΡΠ΄Π΅Ρ
// ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡΡΡ.
SelectClipRgn(Canvas.Handle, FRgn);
// ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠ΅, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² ΠΎΠ±Π»Π°ΡΡΡ
// ΡΠ΅Π³ΠΈΠΎΠ½Π°, ΠΎΡΡΠ΅ΠΊΠ°Π΅ΡΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½Π°Π΄ΠΏΠΈΡΡ
// "Delphi Kingdom", ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΅Π½Π½ΡΡ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
Canvas.Draw(10, 10, FBitmap);
// ΠΡΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Ρ
SelectClipRgn(Canvas.Handle, 0);
ΠΡΠ»ΠΈ ΠΏΡΠΈΡΠΌΠΎΡΡΠ΅ΡΡΡΡ ΠΊ Π½Π°Π΄ΠΏΠΈΡΠΈ, Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ½ΡΡΡΠΎΠ² Π±ΡΠΊΠ² ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΡ ΡΠ°ΠΌΡΠΉ ΡΠΈΡΡΠ½ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π·Π°Π³ΡΡΠΆΠ΅Π½ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ OnCreate (ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΌΡ Π½Π°ΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΡΠΎΡ ΡΠΈΡΡΠ½ΠΎΠΊ ΡΠ΅ΡΠ΅Π· ΡΡΠ°ΡΠ°ΡΠ΅Ρ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΡΠΎΡΠΌΡ Π½Π°Π΄ΠΏΠΈΡΠΈ). ΠΠΎ ΡΡΡΠΈ, ΡΠ°ΠΊ ΠΎΠ½ΠΎ ΠΈ Π΅ΡΡΡ, ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠΎ Π½Π΅ ΡΡΠ°ΡΠ°ΡΠ΅Ρ, Π° ΡΠ΅Π³ΠΈΠΎΠ½ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ. Π Π΅Π³ΠΈΠΎΠ½ β ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ. Π‘ΠΏΠΎΡΠΎΠ±Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ½Ρ (ΡΠΌ. ΡΠ°Π·Π΄. 1.3.3), ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ β ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½Π° Π΄Π»Ρ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°. ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅Π³ΠΈΠΎΠ½ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΠΎ, ΡΡΠΎ Π±Ρ ΠΌΡ Π½ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΌ Π² Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, Π²ΡΠ΅, ΡΡΠΎ Π»Π΅ΠΆΠΈΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΡΠ΅Π³ΠΈΠΎΠ½Π° ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊΡΡ Π½Π°Π΄ΠΏΠΈΡΡ, Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅Π³ΠΈΠΎΠ½, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠΉ ΠΏΠΎ ΡΠΎΡΠΌΠ΅ Ρ ΡΡΠΎΠΉ Π½Π°Π΄ΠΏΠΈΡΡΡ. Π GDI Π΅ΡΡΡ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ, Π½ΠΎ Π²ΠΎΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½Π° Π² ΡΠΎΡΠΌΠ΅ Π±ΡΠΊΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅Ρ. ΠΠ°ΡΠΎ GDI ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ β ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ. Π‘ΡΡΠΎΠ³ΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΡΡΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, API Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠΎΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ), ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ BeginPath, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ EndPath. ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΠ·Π²Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ BeginPath ΠΈ EndPath, Π½Π΅ Π²ΡΠ²ΠΎΠ΄ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π° ΡΠΎ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ Π² ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ (ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ Π·Π°ΠΌΠΊΠ½ΡΡΡΡ ΠΊΡΠΈΠ²ΡΡ ). Π‘ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ (ΡΠΌ., Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π·Π΄. 1.3.4). Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ BeginPath ΠΈ EndPath ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ DrawText. ΡΠΎΡΠΌΠΈΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ, ΡΠΎΡΡΠΎΡΡΡΡ ΠΈΠ· ΠΊΠΎΠ½ΡΡΡΠΎΠ² Π±ΡΠΊΠ². ΠΠ°ΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ PathToRegion ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅Π³ΠΈΠΎΠ½, Π³ΡΠ°Π½ΠΈΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΊΠΎΠ½ΡΡΡΠ°ΠΌΠΈ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ, Ρ.Π΅., Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΠ΅Π³ΠΈΠΎΠ½, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠΉ ΠΏΠΎ ΡΠΎΡΠΌΠ΅ Ρ Π½Π°Π΄ΠΏΠΈΡΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ Π²ΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΠ·Π²Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ BeginPath ΠΈ EndPath, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡ ΠΊ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ. ΠΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΠ°Π·Π΄. 1.3.4.
Π Ρ ΠΎΠ΄Π΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ΅Π³ΠΈΠΎΠ½ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΡΠ°ΠΊ ΡΡΠΎ Π½Π΅Ρ Π½ΡΠΆΠ΄Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ OnPaint. ΠΠ½ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΈ Π΅Π³ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠΎΠ»Π΅ FRgn ΡΠΎΡΠΌΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠ΅, ΡΡΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ ΡΠ΄Π΅Π»Π°ΡΡ, β ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅Π³ΠΈΠΎΠ½ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ SelectClipRgn, ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΡΠΈΡΡΠ½ΠΎΠΊ ΠΈ ΡΠ±ΡΠ°ΡΡ ΡΠ΅Π³ΠΈΠΎΠ½ ΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΌΠ΅ΡΠ°Π» Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠΈΡΡΡΡΡΡ Π·Π²Π΅Π·Π΄Ρ Π² ΠΏΡΠ°Π²ΠΎΠΌ Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ³Π»Ρ ΠΎΠΊΠ½Π° (Π»ΠΈΡΡΠΈΠ½Π³ 1.35).
ΠΠΈΡΡΠΈΠ½Π³ 1.35. Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π²Π΅Π·Π΄var
I: Integer;
Star: array[0..4] of TPoint;
...
// Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ Π³ΡΡΠΏΠΏΠ° ΠΊΠΎΠΌΠ°Π½Π΄ ΡΠΈΡΡΠ΅Ρ Π΄Π²Π΅ Π·Π²Π΅Π·Π΄Ρ ΡΠΏΡΠ°Π²Π° ΠΎΡ
// Π½Π°Π΄ΠΏΠΈΡΠΈ. ΠΡΠΈ Π·Π²Π΅Π·Π΄Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π²ΡΡ
// ΡΠ΅ΠΆΠΈΠΌΠΎΠ² Π·Π°Π»ΠΈΠ²ΠΊΠΈ: WINDING ΠΈ ALTERNATE. ΠΠ»Ρ ΠΏΡΠΎΡΡΡΡ
// ΡΠΈΠ³ΡΡ ΡΡΠΈ ΡΠ΅ΠΆΠΈΠΌΡ Π΄Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΡΠ°Π·Π½ΠΈΡΠ°
// Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠΈ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠΈΠ³ΡΡ,
// ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΠ°ΠΌΠΎΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ.
Canvas.Pen.Style := psSolid;
Canvas.Pen.Width := 1;
Canvas.Pen.Color := clRed;
Canvas.Brush.Style := bsSolid;
Canvas.Brush.Color := clRed;
// ΠΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ Π·Π²Π΅Π·Π΄Ρ. ΠΠ½ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ
// Π² ΠΌΠ°ΡΡΠΈΠ² Star Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ (Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΉ
// ΡΡΠΈΡΠ°ΡΡ Π²Π΅ΡΡ Π½ΡΡ Π²Π΅ΡΡΠΈΠ½Ρ ΠΈ Π½ΡΠΌΠ΅ΡΠΎΠ²Π°ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎ
// ΡΠ°ΡΠΎΠ²ΠΎΠΉ ΡΡΡΠ΅Π»ΠΊΠ΅ ΠΎΡ Π½Π΅Π΅): 1-3-5-2-4
for I := 0 to 4 do
begin
Star[I].X := Round(380 + 90 * Sin(0.8 * I * Pi));
Star[I].Y := Round(100 - 90 * Cos(0.8 * I * Pi));
end;
// Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ΅ΠΆΠΈΠΌ Π·Π°Π»ΠΈΠ²ΠΊΠΈ WINDING. ΠΡΠΈ
// ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π²ΡΠ΅
// ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ,
// ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ Π½Π°ΡΠΈΡΠΎΠ²Π°Π½.
SetPolyFillMode(Canvas.Handle, WINDING);
Canvas.Polygon(Star);
// Π‘Π΄Π²ΠΈΠ³Π°Π΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π·Π²Π΅Π·Π΄Ρ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π΅
// ΠΏΡΠ°Π²Π΅Π΅ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ Π·Π°Π»ΠΈΠ²ΠΊΠΈ.
for I := 0 to 4 do Inc(Star([I].X, 200);
// Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ΅ΠΆΠΈΠΌ Π·Π°Π»ΠΈΠ²ΠΊΠΈ ALTERNATE. ΠΡΠΈ
// ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ° Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠ΅
// Π»ΠΈΠ½ΠΈΠΈ, Π»Π΅ΠΆΠ°ΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠΉ ΠΈ ΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π°ΠΌΠΈ
// ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΡΠΈΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π² ΡΠ΅Π½ΡΡΠ΅
// Π·Π²Π΅Π·Π΄Ρ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΌ.
SetPolyFillMode(Canvas.Handle, ALTERNATE);
Canvas.Polygon(Star);
Π‘Π°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ Π·Π΄Π΅ΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΠ±Π΅ Π·Π²Π΅Π·Π΄Ρ ΡΠΈΡΡΡΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΆΠΈΠΌ Π·Π°Π»ΠΈΠ²ΠΊΠΈ. Π‘Π½Π°ΡΠ°Π»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΉ ΡΡΠΈΠ³ΠΎΠ½ΠΎΠΌΠ΅ΡΡΠΈΠΈ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ Π·Π²Π΅Π·Π΄Ρ, ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ² Star ΠΈ ΡΡΠ° Π·Π²Π΅Π·Π΄Π° ΡΠΈΡΡΠ΅ΡΡΡ Ρ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ Π·Π°Π»ΠΈΠ²ΠΊΠΈ WINDING. ΠΡΠΈ ΡΡΠΎΠΌ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ Π²ΡΠ΅ ΡΠΎΡΠΊΠΈ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, ΡΡΠΎ Π»ΡΡ, Π²ΡΠΏΡΡΠ΅Π½Π½ΡΠΉ ΠΈΠ· ΡΡΠΎΠΉ ΡΠΎΡΠΊΠΈ, ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅Ρ ΠΊΠΎΠ½ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠ°Π·, Ρ.Π΅. Π²ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΠ°. ΠΠ°ΡΠ΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡΠΈΠ½ Π·Π²Π΅Π·Π΄Ρ ΡΠΌΠ΅ΡΠ°ΡΡΡΡ Π²ΠΏΡΠ°Π²ΠΎ, ΠΈ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ Π·Π²Π΅Π·Π΄Π° ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, Π½ΠΎ ΡΠΆΠ΅ Ρ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ Π·Π°Π»ΠΈΠ²ΠΊΠΈ ALTERNATE. Π ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ½ΠΎΠΉ ΠΈ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π°ΠΌΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°, ΠΈ ΠΏΡΡΠΈΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π²Π½ΡΡΡΠΈ Π·Π²Π΅Π·Π΄Ρ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅Π·Π°ΠΊΡΠ°ΡΠ΅Π½Π½ΡΠΌ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π·Π²Π΅Π·Π΄Ρ ΠΌΡ Π·Π΄Π΅ΡΡ ΡΠΈΡΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠ° TCanvas, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΆΠΈΠΌΡ Π·Π°Π»ΠΈΠ²ΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌ API-ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ β ΡΡΠΎ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠ°ΠΌΠΊΠΈ Π½Π° ΡΠΎΠ½Π΅ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΠΈΡ ΡΡ Π·Π΅Π»Π΅Π½ΡΡ Π»ΠΈΠ½ΠΈΠΉ. ΠΠΈΠ½ΠΈΠΈ ΡΠΈΡΡΡΡΡΡ Π΄ΠΎ ΡΠ°ΠΌΠΊΠΈ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΠ΅Π½ΡΡ ΡΠ°ΠΌΠΊΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌ, Π° Π½Π΅ Π·Π°Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ²Π΅ΡΠΎΠΌ ΡΠΎΠ½Π°. Π‘Π°ΠΌΠ° ΡΠ°ΠΌΠΊΠ° ΡΠΈΡΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ PolyPolygon, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ Π·Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠ³ΡΡΡ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π·Π°ΠΌΠΊΠ½ΡΡΡΠΌΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΠ°ΠΌΠΈ (Π»ΠΈΡΡΠΈΠ½Π³ 1.36).