ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Graph Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Turbo Pascal

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ΠΎ Π½Π° ΡΠΊΡ€Π°Π½Π΅, скорСС всСго, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ сТатый ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. ΠŸΠΎΡ…ΠΎΠΆΠ°Ρ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ, Ссли «Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ» Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠ² прямых ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡Π΅ΠΊ: получится эллипс. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ высоты экрана ΠΊ ΡˆΠΈΡ€ΠΈΠ½Π΅ Π½Π΅ Ρ€Π°Π²Π½ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅ΠΉ способности ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΊ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅ΠΉ способности ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ. Для ΡƒΡ‡Π΅Ρ‚Π° этого нСравСнства Π² Π³Ρ€Π°Ρ„ичСском стандартС… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Graph Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Turbo Pascal (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Graph

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Graph прСдставляСт собой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ графичСскими Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² дисплССв: CGA, EGA, VGA ΠΈ Ρ‚. Π΄. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° содСрТит Π±ΠΎΠ»Π΅Π΅ пятидСсяти графичСских ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… (рисованиС Ρ‚ΠΎΡ‡Π΅ΠΊ, Π»ΠΈΠ½ΠΈΠΉ, окруТностСй ΠΈ Ρ‚. ΠΏ.), Ρ‚Π°ΠΊ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΡ… возмоТности Π±Π°Π·ΠΎΠ²Ρ‹Ρ… (ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΠΈΠ³ΡƒΡ€, Π²Ρ‹Π²ΠΎΠ΄ тСкста ΠΈ Π΄Ρ€.).

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ модуля Graph, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ соотвСтстствСнно графичСскиС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ (Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .BGI), Π° Π΅ΡΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Ρ‰Π΅ ΠΈ ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²Ρ‹Π΅ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΌ ΠΆΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² (с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .CHR).

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, систСмС программирования (компилятору) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ доступСн ΠΌΠΎΠ΄ΡƒΠ»ΡŒ GRAPH. TPU (ΠΎΠ½ Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΠΎΡΡ‚Π°Π² Ρ„Π°ΠΉΠ»Π° TURBO. TPL, Π° ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ находится Π² Π°Ρ€Ρ…ΠΈΠ²Π΅ BGI. ARC).

Π€Π°ΠΉΠ»Ρ‹ BGI ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ модуля Graph

Π€Π°ΠΉΠ» BGI — это графичСский интСрфСйс (Borland Graphic Interface) Ρ„ΠΈΡ€ΠΌΡ‹ Borland. Он ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ взаимодСйствиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с Π³Ρ€Π°Ρ„ичСскими устройствами. ΠŸΠ΅Ρ€Π΅Π΄ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π³Ρ€Π°Ρ„ичСских Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… дисплСя ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° InitGraph опрСдСляСт Ρ‚ΠΈΠΏ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°, прСдставлСнного Π² ΠŸΠš, ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ BGI-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° CloseGraph Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ графичСский Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΈΠ· ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΈ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ тСкстовый Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°. Π’ ΠΎΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· Π³Ρ€Π°Ρ„ичСского Ρ€Π΅ΠΆΠΈΠΌΠ° Π±Π΅Π· Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° (RestoreCRTMode) ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ (SetGraphMode).

Π˜Ρ‚Π°ΠΊ, Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹:

CGA.BGI

— Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для IBM CGA, MCGA;

EGAVGA.BGI

— Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для IBM EGA, VGA;

HERC.BGI

— Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для Hercules;

ATT.BGI

— Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для АВ&Π’6300 (400 строк);

PC3270.BGI

— Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для IBM 3270PC;

IBM8514.BGI

— Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для IBM 8514.

Π’Π°ΠΊΠΎΠΉ Π½Π°Π±ΠΎΡ€ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΡ€ΠΈ составлСнии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ практичСски Π½Π° Π²ΡΠ΅Ρ… ПК, совмСстимых с ΠŸΠš Ρ„ΠΈΡ€ΠΌΡ‹ IBM. Если ΠΆΠ΅ такая Π·Π°Π΄Π°Ρ‡Π° Π½Π΅ ΡΡ‚ΠΎΠΈΡ‚, Ρ‚ΠΎ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ», ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ прСдставлСнному Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌ ΠŸΠš графичСскому Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρƒ.

ВсС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ модуля Graph ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹:

1) Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ графичСскими Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ ΠΈ ΠΈΡ… Π°Π½Π°Π»ΠΈΠ· (DetectGraph, InitGraph, CloseGraph, GraphDefaults, ClearDevice, InstallUserDriver, RegisterBGIDriver, RestoreCRTMode, SetGraphMode, SetWrifeMode, GetGraphMode, GetModeRange, GetMaxMode, GetModeName, GetDriverName, GraphResuIt, GraphErrorMsg).

2) РисованиС графичСских ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² ΠΈ Ρ„ΠΈΠ³ΡƒΡ€:

a) ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ «Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ» (MoveTo, MoveRel, GetMaxX, GetMaxY, GetX, GetY);

b) собствСнно рисованиС (Line, LineTo, LineRel, Arc, GetArcCoords, Circle, Sector, Ellipse, Rectangle, DrawPoly);

c) ΡΡ‚ΠΈΠ»ΡŒ Π»ΠΈΠ½ΠΈΠΉ ΠΈ ΠΊΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ сТатия изобраТСния (SetLineStyle, GetLineSettings, SetAspeclRatio, GetAspectRatio).

3) Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Π°ΠΌΠΈ заполнСния (SetColor, GetColor, SetBkColor, GetBkColor, GetMaxColor, GetPalette, GetPaletteSize, GetDefaultPalette, SetPalette, SetAllPalette, SetRGBPalette, SetFillStyle, SetFillPattern, GetFillPattern, GetFillSettings, SetGraphBufSize, FillPoly, FillEIIipse, FloodFill, PicSlice, Bar, Bar3D).

4) Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (PutPixel, GetPixel, ImageSize, Getlmage, Putlmage).

5) Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ страницами (SetActivePage, SetVisualPage).

6) ГрафичСскиС ΠΎΠΊΠ½Π° (Π²ΡŒΡŽΠΏΠΎΡ€Ρ‚Ρ‹) (SetViewPort, GetViewSettings, ClearViewPort).

7) Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ тСкста (RegisterBGIFont, lnstallUserFont, OutText, OutTextXY, SetTextStyle, SetTextJustify, SetUserCharSize, GetTextSettings, GetTextHeight, TextWidth).

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ графичСскими Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ графичСского Ρ€Π΅ΠΆΠΈΠΌΠ°

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ InitGraph. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π±Π»ΠΎΠΊ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ графичСского Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ Π΅Π³ΠΎ закрытия. Π’Π°ΠΊΠΎΠΉ Π±Π»ΠΎΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅ΠΆΠΈΠΌ, провСряСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ, Ссли всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΡˆΠ»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, допускаСт Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ объявлСна ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

InitGraph (VAR GraphDriver; {Ρ‚ΠΈΠΏ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°}

VAR GraphMode Integer; {Ρ€Π΅ΠΆΠΈΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ}

DriverPath: String); {ΠΏΡƒΡ‚ΡŒ ΠΊ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρƒ}

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ константы для задания Π²ΠΈΠ΄Π° Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ GraphDriver ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ InitGraph (послСдняя константа Π²Π²Π΅Π΄Π΅Π½Π° для Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ GetModeRange ΡƒΠΆΠ΅ послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ).

Detect

= 0;

{ Π°Π²Ρ‚ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅}

CGA

= 1;

{Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ CGA}

HCGA

= 2;

{Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ MCGA}

EGA

= 3;

{ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ EGA 256K}

EGA64

= 4;

{ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ EGA 64K}

EGAMono

= 5;

{ EGA с ΠΌΠΎΠ½ΠΎ — дисплССм}

IBM8514

= 6;

{ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ 8514}

НСгсМопо

= 7;

{ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ Hercules}

АTT400

= 8;

{ для ΠŸΠ­Π’Πœ AT&T}

VGA

= 9;

{ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ VGA}

Π Π‘3270

= 10;

{ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ 3270}

CurrentDriver

=-128;

{ для GetModeRange}

Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ GraphDriver ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы Detect систСма Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ Π² Ρ€Π΅ΠΆΠΈΠΌ автоопрСдСлсиия. Если Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ систСмы Π² Π³Ρ€Π°Ρ„ичСский Ρ€Π΅ΠΆΠΈΠΌ, Ρ‚ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ BGI-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ся Ρ€Π΅ΠΆΠΈΠΌ с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ. Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… GraphDriver ΠΈ GraphMode ΠΏΡ€ΠΈ этом Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Ρ‹ автоматичСски Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ значСния ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ ошибки.

Вакая установка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ рСкомСндуСтся Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠŸΠš с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°ΠΌΠΈ. Однако этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠŸΠš ΠΈΠ»ΠΈ Π½Π° Π΄ΠΈΡΠΊΠ΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ всСх Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ². Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° большая, Ρ‚ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ всСх Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ затруднСния.

Если ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ GraphDriver содСрТит Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°, Ρ‚ΠΎ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, GraphMode, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π½ΠΎΠΌΠ΅Ρ€) Ρ€Π΅ΠΆΠΈΠΌΠ°, допустимого ΠΏΡ€ΠΈ этом Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π΅.

ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ графичСскиС установки (ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ указатСля, ΠΏΠ°Π»ΠΈΡ‚Ρ€Π°, Ρ†Π²Π΅Ρ‚, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ графичСского ΠΎΠΊΠ½Π° ΠΈ Ρ‚. Π΄.) ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ DriverPath ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, содСрТащий Ρ„Π°ΠΉΠ»Ρ‹ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ. Если Π² Π½Π΅Π³ΠΎ пСрСдаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «(пустая строка), Ρ‚ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Π­Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ DriverPath, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ BGI-Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ BINOBJ Π² Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚ΠΈΠΏΠ° .OBJ, Π° Π·Π°Ρ‚Π΅ΠΌ скомпонованы с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π² Π•Π₯Π•-Ρ„Π°ΠΉΠ».

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° CloseGraph. Для ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π³Ρ€Π°Ρ„ичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ всСгда ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ CloseGraph. Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Она ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ экран, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ Π² Ρ‚Скстовый Ρ€Π΅ΠΆΠΈΠΌ ΠΈ, Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈΠ· ΠΏΠ°ΠΌΡΡ‚ΠΈ всС BGI-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ ΠΈ ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²Ρ‹Π΅ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹. ΠŸΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π² Π³Ρ€Π°Ρ„ичСскиС Ρ€Π΅ΠΆΠΈΠΌΡ‹ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΡƒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° InitGraph Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ GraphDriver. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ ошибки ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ОбъяснСниС

— 2

НСт графичСского Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°

— 3

НС Π½Π°ΠΉΠ΄Π΅Π½ Ρ„Π°ΠΉΠ» Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°

— 4

Ошибка Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ (Π² Π΅Π³ΠΎ ΠΊΠΎΠ΄Π΅)

— 5

НС Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ памяти для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°

— 10

НСвозмоТный Ρ€Π΅ΠΆΠΈΠΌ для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°

— 15

НСт Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°

Если ΠΆΠ΅ ошибок ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ, Ρ‚ΠΎ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ GraphDriver возвращаСтся Π½ΠΎΠΌΠ΅Ρ€ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ списка констант.

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° провСдСния графичСской ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Он ΠΎΡΡƒΡ‰Π΅ΡΡ‚вляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

GraphResult: Integer

Π­Ρ‚Π° функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° послСднСго Π²Ρ‹Π·ΠΎΠ²Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Bar

Bar3D

ClearViewPort CloseGraph DetectGraph

DrawPoly FillPoly

FloodFill GetGraphMode

ImageSize InitGraph

InstallUserDriver InstallUserFont PieStice RegisterBGIdriver RegisterBGIfont SetAllPalette

SetFillPattern SetFillStyle SetGraphBufSize SetGraphMode SetLineStyle SetPalette SetText

Justify SetTextStyle

Π’Π°Π±Π»ΠΈΡ†Π° ΠΊΠΎΠ΄ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… GraphResult, ΠΈ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° ΠΈΡ… ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΏΡ€ΠΈ описании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GraphErrorMsg, Ρ‚.ΠΊ. ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ совмСстно. ПослС ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° GraphResult ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π΅Π΅ Π²Ρ‹Π·ΠΎΠ² даст Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, поэтому для дальнСйшСго использования Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² тСстирования рСкомСндуСтся ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉΠ»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Для быстрой Π²Ρ‹Π΄Π°Ρ‡ΠΈ простого сообщСния ΠΎ Ρ‚ΠΈΠΏΠ΅ ошибки графичСской систСмы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰Π°Ρ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GraphResult Π² ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ вывСсти ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ Write. Π­Ρ‚Π° функция объявлСна ΠΊΠ°ΠΊ:

GraphErrorMsg (ErrorCode: Integer): String;

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄ΠΎΠ² ошибок, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph, ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π°

Код

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠ΅

grOk

No error

Ошибки Π½Π΅Ρ‚

grNoInitGraph

— 1

(BGI) Graphics not installed (use InitGraph)

Π“Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°

grNotDetected

— 2

Graphics hardware not detcted

ГрафичСский Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½

grFileNotFound

— 3

Device driver file not detected

BGIΡ„Π°ΠΉΠ»Π° Π½Π΅Ρ‚ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅

grlnvalidDriver

— 4

Invali device driver file

BGI-Ρ„Π°ΠΉΠ» содСрТит ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄

grNoLoadMem

— 5

Not enough memory to load driver

НСт мСста Π² ΠžΠ—Π£ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°

grNoScanMem

— 6

Out of memory in scan fill

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ FillPoly Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ памяти

grNoFloodMem

— 7

Out of memory in flood fill

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ FloodFill Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ памяти

grFontNotFound

— 8

Font file not found

CHRΡ„Π°ΠΉΠ»Π° Π½Π΅Ρ‚ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅

grNoFontMem

— 9

Not enough memory to load font

НСт мСста Π² ΠžΠ—Π£ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΡˆΡ€ΠΈΡ„Ρ‚Π°

grlnvalidMode

— 10

Invalid Graphics mode for selected driver

НСвозмоТный Ρ€Π΅ΠΆΠΈΠΌ для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°

grError

— 11

Graphics error

Ошибка Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ

grIOError

— 12

Graphics I/O error

Ошибка Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ

grInvalidFont

— 13

Invalid font fite

Π’ Ρ„Π°ΠΉΠ»Π΅ ΡˆΡ€ΠΈΡ„Ρ‚Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄

grInvalidFontNum

— 14

Invalid font number

ΠΠ΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π°

grInvalidDeviceNum

— 15

Invalid device number

ΠΠ΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ€ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ Π±Π»ΠΎΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ графичСского Ρ€Π΅ΠΆΠΈΠΌΠ° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Uses Graph;

Procedure GrInit;

Var

GraphDriver: Integer;

GraphMode: Integer;

ErrorCode: Integer;

Begin

GraphDriver: =Detect;

InitGraph (GraphDriver, GraphMode, '');

ErrorCode: =GraphResult;

if ErrorCode <> grOK then

begin

Writeln (`Ошибка Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ: `, GraphErrorMsg (ErrorCode));

Writeln (`ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° остановлСна…');

Halt (1);

end;

Begin {ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ}

GrInit;

Line (0, 0, GetMaxX, GetMaxY);

Readln;

CloseGraph;

End.

Π’ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Grlnit Π»ΡƒΡ‡ΡˆΠ΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, INITGRAF. PAS) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ этого Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΈ компиляции. Π’Π°ΠΊΠΎΠΉ Π±Π»ΠΎΠΊ всСгда Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ стандартный графичСский Ρ€Π΅ΠΆΠΈΠΌ максимального Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΈ Π°Π½Π°Π»ΠΈΠ· графичСских Ρ€Π΅ΠΆΠΈΠΌΠΎΠ²

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ графичСскиС Ρ€Π΅ΠΆΠΈΠΌΡ‹ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ столбцС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΈΠΌΠ΅Π½Π° ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… констант, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ графичСскими Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ. ПослСдний столбСц ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ количСство полноэкранных ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

Π”Ρ€Π°ΠΉΠ²Π΅Ρ€

Имя константы Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΈ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ экрана (Π² Ρ‚ΠΎΡ‡ΠΊΠ°Ρ…)

ΠŸΠ°Π»ΠΈΡ‚Ρ€Π°

Число видСостраниц

CGA

CGAC0 = 0

320×200

4 Ρ†Π²Π΅Ρ‚Π°

CGAC1 = 1

320×200

4 Ρ†Π²Π΅Ρ‚Π°

CGAC2 = 2

320×200

4 Ρ†Π²Π΅Ρ‚Π°

CGAC3 = 3

320×200

4 Ρ†Π²Π΅Ρ‚Π°

CGAHi = 4

640×200

2 Ρ†Π²Π΅Ρ‚Π°

MCGA

MCGAC0 = 0

320×200

4 Ρ†Π²Π΅Ρ‚Π°

MCGAC1 = 1

320×200

4 Ρ†Π²Π΅Ρ‚Π°

MCGAC2 = 2

320×200

4 Ρ†Π²Π΅Ρ‚Π°

MCGAC3 = 3

320×200

4 Ρ†Π²Π΅Ρ‚Π°

MCGAMed= 4

640×200

2 Ρ†Π²Π΅Ρ‚Π°

MCGAHi = 5

640×480

2 Ρ†Π²Π΅Ρ‚Π°

EGA

EGALo = 0

640×200

16 Ρ†Π²Π΅Ρ‚ΠΎΠ²

EGAHi = 1

640×350

16 Ρ†Π²Π΅Ρ‚ΠΎΠ²

EGA64

EGA64Lo = 0

640×200

16 Ρ†Π²Π΅Ρ‚ΠΎΠ²

EGA64Hi = 1

640×350

4 Ρ†Π²Π΅Ρ‚Π°

EGAMono

EGAMonoHi = 3

640×350

2 Ρ†Π²Π΅Ρ‚Π°

1(2)

Herc

HercMonoHi = 0

720×348

2 Ρ†Π²Π΅Ρ‚Π°

АВВ

АВВ400Б0 = 0

320×200

4 Ρ†Π²Π΅Ρ‚Π°

АВВ400Б1 = 1

320×200

4 Ρ†Π²Π΅Ρ‚Π°

АВВ400Б2 = 2

320×200

4 Ρ†Π²Π΅Ρ‚Π°

АВВ400Π‘Π— = 3

320×200

4 Ρ†Π²Π΅Ρ‚Π°

ATT400Med = 4

640×200

2 Ρ†Π²Π΅Ρ‚Π°

АВВ400Нi= 5

640×400

2 Ρ†Π²Π΅Ρ‚Π°

VGA

VGALo = 0

640×200

16 Ρ†Π²Π΅Ρ‚ΠΎΠ²

VGAMed = 1

640×350

16 Ρ†Π²Π΅Ρ‚ΠΎΠ²

VGAHi = 2

640×480

16 Ρ†Π²Π΅Ρ‚ΠΎΠ²

PC3270

PC3270Hi = 0

720×350

2 Ρ†Π²Π΅Ρ‚Π°

IBM8514

IBM8514Lo = 0

640×480

256 Ρ†Π²Π΅Ρ‚ΠΎΠ²

IBM8514= 1

1024×768

256 Ρ†Π²Π΅Ρ‚ΠΎΠ²

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ возмоТности установлСнного Π² ΠŸΠš Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ инструкциСй ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½ΠΈΠΌ.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° DetectGraph. Для тСстирования графичСского Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph объявлСна ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°:

DetectGraph (VAR GraphDriver, GraphMode: Integer)

Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° Π΄ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Π§Π΅Ρ€Π΅Π· Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ GraphDriver возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ столбца Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π° Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ GraphMode — ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ послСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ столбца. Π­Ρ‚ΠΈ значСния ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ся ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ фактичСских ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ InitGraph. ПослС опрСдСлСния GraphDriver автоматичСски становится доступным Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ графичСских Ρ€Π΅ΠΆΠΈΠΌΠΎΠ², Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠΌ

БущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ манипуляции Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ графичСского Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° — ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½ΠΎ ΡƒΠΆΠ΅ послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Но Ρ‡Π°ΡΡ‚ΠΎ Π±Ρ‹Π²Π°Π΅Ρ‚ Π²Π°ΠΆΠ½Ρ‹ΠΌ сначала ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ значСния Ρ€Π΅ΠΆΠΈΠΌΠΎΠ².

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ графичСских Ρ€Π΅ΠΆΠΈΠΌΠΎΠ². НомСр Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ графичСского Ρ€Π΅ΠΆΠΈΠΌΠ° для установлСнного Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° опрСдСляСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ

GetGraphMode: Integer,

Ѐункция

GetMaxMode: Word

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ максимального Ρ€Π΅ΠΆΠΈΠΌΠ° для графичСского Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°; Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² 0… GetMaxMode. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ этот ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

GetModeRange (GraphDriver: Integer; VAR LoMode, HiMode: Integer),

Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ LoMode ΠΈ HiMode, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅ΠΉ соотвСтствСнно ниТнюю ΠΈ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² для Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° GraphDriver. Но ΠΏΠΎ Ρ€ΡΠ΄Ρƒ тСхничСских сообраТСний ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ GetMaxMode, полагая ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π²Π½Ρ‹ΠΌ Π½ΡƒΠ»ΡŽ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetModeName ΠΈ GetDriverName.

GetModeName (GraphMode: Word): String. Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТится ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, имя константы ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, '640×200 CGA'. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΈΡ… графичСских Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠŸΠ­Π’Πœ.

USES Graph;

{ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Graph}

{$I initgraf. pas}

{ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ}

VAR

mode: Integer;

BEGIN

Grlnit;

{ инициализация}

for mode := 0 to GetMaxMode do

{ ΠΏΠΎΠΊΠ°Π· всСх Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² }

OutTextXY (10, 10+mode*10, GetModeName (mode));

ReadLn;

{ ΠΏΠ°ΡƒΠ·Π° Π΄ΠΎ Π½Π°ΠΆΠ°Ρ‚ия…}

CloseGraph

{ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ}

END.

Ѐункция GetDriverName: String позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ имя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°. Π•Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ обосновано Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ InitGraph пСрСмСнная GraphDriver ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°, ΠΊΠ°ΠΊ Detect.

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° экрана ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ²

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° графичСского экрана. Π”Π²Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ дСйствия, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрвая ΠΈΠ· Π½ΠΈΡ… являСтся ΠΊΠ°ΠΊ Π±Ρ‹ подмноТСством Π²Ρ‚ΠΎΡ€ΠΎΠΉ:

ClearDevice

Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ графичСский экран ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² (0, 0), Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°

GraphDefaults ΠΊΡ€ΠΎΠΌΠ΅ очистки экрана устанавливаСт ряд ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² графичСской систСмы:

o Π³Ρ€Π°Ρ„ичСскоС ΠΎΠΊΠ½ΠΎ становится Ρ€Π°Π²Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ экрана;

o Π²ΠΎΡΡΡ‚анавливаСтся систСмная цвСтовая ΠΏΠ°Π»ΠΈΡ‚Ρ€Π°;

o ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ся Ρ†Π²Π΅Ρ‚Π° основных Π»ΠΈΠ½ΠΈΠΉ ΠΈ Ρ„ΠΎΠ½Π° экрана;

o Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° ΠΈ ΡΡ‚ΠΈΠ»ΡŒ Π»ΠΈΠ½ΠΈΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ;

o Ρ†Π²Π΅Ρ‚ ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½ Π·Π°Π»ΠΈΠ²ΠΊΠΈ гСомСтричСских Ρ„ΠΈΠ³ΡƒΡ€ ΠΈ Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹Ρ… Π»ΠΎΠΌΠ°Π½Ρ‹Ρ… принимаСтся ΠΊΠ°ΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ;

o ΠΏΠ΅Ρ€Π΅ΡƒΡΡ‚анавливаСтся Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚ ΠΈ Π΅Π³ΠΎ ΡΡ‚ΠΈΠ»ΡŒ.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° GraphDefaults нСявно вызываСтся ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚, no-сути, всС стартовыС установки графичСских ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ². Оно осущСствляСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ SetGraphMode ( GraphMode: Integer)

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ систСму Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ GraphMode Ρ€Π΅ΠΆΠΈΠΌ ΠΈ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ экран ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π°. ΠŸΡ€ΠΈ этом всС характСристики ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’Π°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° RestoreCRTMode. ΠŸΡ€ΠΈ написании Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΈ Π³Ρ€Π°Ρ„ичСскиС, ΠΈ Ρ‚СкстовыС Ρ€Π΅ΠΆΠΈΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° RestoreCRTMode, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ систСму Π² Ρ‚Скстовый Ρ€Π΅ΠΆΠΈΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠΉ Π΄ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Казалось Π±Ρ‹, ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° с ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ дСйствиСм — CloseGraph. Однако послС Π½Π΅Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π² Π³Ρ€Π°Ρ„ичСский Ρ€Π΅ΠΆΠΈΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ InitGraph, Ρ‡Ρ‚ΠΎ довольно слоТно. Если ΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ RestoreCRTMode, Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ Π±ΡƒΠ΄Π΅Ρ‚ достаточно простым

USES Graph;

{ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Graph}

{$I Initgraf. pas}

{ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ}

CONST

{константы — сообщСния}

graph_str = `Π­Ρ‚ΠΎ графичСский Ρ€Π΅ΠΆΠΈΠΌ';

text_str = 'А это тСкстовый Ρ€Π΅ΠΆΠΈΠΌ';

graph_ back = 'А это снова графичСский Ρ€Π΅ΠΆΠΈΠΌ';

BEGIN

Grlnit;

{инициализация Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ}

Line (0,0,GetMaxX, GetMaxY };

{ диагональ экрана}

OutTextXY (0,100,graph_str);

{ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ сообщСния}

ReadLn;

{ΠΏΠ°ΡƒΠ·Π° Π΄ΠΎ Π½Π°ΠΆΠ°Ρ‚ия Π²Π²ΠΎΠ΄Π°}

RestoreCRTMode;

{восстановлСниС тСкстового Ρ€Π΅ΠΆΠΈΠΌΠ°}

Write{ text_str);

{ Π²Ρ‹Π²ΠΎΠ΄ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ сообщСния}

ReadLn;

{ΠΏΠ°ΡƒΠ·Π° Π΄ΠΎ Π½Π°ΠΆΠ°Ρ‚ия Π²Π²ΠΎΠ΄Π°}

SetGraphMode (GetGraphMode);

{восстановлСниС графичСского Ρ€Π΅ΠΆΠΈΠΌΠ°}

Une (0,0,GetMaxX, GetMaxY);

{ диагональ экрана }

OutTextXY (0,100,graph_back);

{Π²Ρ‹Π²ΠΎΠ΄ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ сообщСния}

ReadLn;

{ ΠΏΠ°ΡƒΠ·Π° Π΄ΠΎ Π½Π°ΠΆΠ°Ρ‚ия Π²Π²ΠΎΠ΄Π°}

CloseGraph

{ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ}

End.

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetGraphMode, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ графичСского Ρ€Π΅ΠΆΠΈΠΌΠ°. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ RestoreCRTMode Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ графичСского Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π½Π΅ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚, Ρ‚. Π΅. ΠΎΠ½ ΠΎΡΡ‚аСтся Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ.

БистСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΈ «Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ»

Π’ Ρ€Π°ΡΡ‚Ρ€ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ экран прСдставляСт собой ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ массив адрСсуСмых Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ Π»ΡŽΠ±ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΌ образуСтся ΠΊΠ°ΠΊ композиция свСтящихся ΠΈΠ»ΠΈ ΠΏΠΎΠ³Π°ΡˆΠ΅Π½Π½Ρ‹Ρ… пиксСлов. Π­Ρ‚ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ Π°Π΄Ρ€Π΅ΡΡƒΡŽΡ‚ΡΡ двумя Ρ†Π΅Π»Ρ‹ΠΌΠΈ — Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚ΠΎΡ‡ΠΊΠΈ nx ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ny:

0 <= nΡ… <= nx_max,

0 <= nу <= ny_max,

Π³Π΄Π΅ nx_max ΠΈ ny_max — количСство адрСсуСмых Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ минус Π΅Π΄ΠΈΠ½ΠΈΡ†Π°

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph прСдусмотрСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ опроса ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… адрСсуСмых ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ экрана. Она Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠ°Ρ€ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

GetMaxX: Integer;

GetMaxY: Integer.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ ΠΈΠΌΠΈ значСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ nx_max ΠΈ ny_max, Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΈ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ². ΠŸΡ€ΠΈ адрСсации Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ, большими, Ρ‡Π΅ΠΌ эти значСния, опСрация игнорируСтся.

Π’ΠΎΡ‡ΠΊΠ° с Π°Π΄Ρ€Π΅ΡΠΎΠΌ (0,0) ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ располоТСна Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ экрана дисплСя. ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ (nx, ny) Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ устройства. Они ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»Ρ‹Π΅ значСния.

«Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ» ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π΅Ρ‰Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚, графичСский курсор выполняСт Ρ‚Π΅ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΡƒΡ€ΡΠΎΡ€ Π² Ρ‚Скстовом Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ являСтся ΠΏΡ€ΠΈ этом Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ. ПолоТСниС графичСского курсора ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ изобраТСния графичСского ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°, Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ «ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ».

ГрафичСскиС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π·Π°Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΡΠΊΡ€Π°Π½Π΅ дисплСя. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтом, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π΅Ρ‚ доступ программист, являСтся пиксСль, СстСствСнно Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ графичСских ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ порядковыС Π½ΠΎΠΌΠ΅Ρ€Π° пиксСлСй. Допустимый Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ измСнСния графичСских ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ составляСт [0, rx- 1] для X ΠΈ [0, ry — 1] для YΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹. Π’ΠΎΡ‡ΠΊΠΎΠΉ отсчСта являСтся Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ Π»Π΅Π²Ρ‹ΠΉ ΡƒΠ³ΠΎΠ» экрана. ЗначСния XΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΎΡ‚ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ, Π° Y-ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ — свСрху Π²Π½ΠΈΠ·. Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ графичСскиС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π΄Π΅ΠΊΠ°Ρ€Ρ‚ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, принятых Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, ΠΈ ΡΠ»ΡƒΠΆΠΈΡ‚ источником ошибок для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎ программиста.

Для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ отобраТСния Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Π΄Π΅ΠΊΠ°Ρ€Ρ‚ΠΎΠ²ΠΎΠΉ систСмС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π½Π° ΡΠΊΡ€Π°Π½Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

1. ГрафичСскиС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ цСлочислСнныС значСния.

2. ГрафичСскиС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ снизу (Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ), Ρ‚Π°ΠΊ ΠΈ ΡΠ²Π΅Ρ€Ρ…Ρƒ (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ).

3. ГрафичСская ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° Y ΠΎΡ‚считываСтся свСрху Π²Π½ΠΈΠ·.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, гСомСтричСскиС Π΄Π΅ΠΊΠ°Ρ€Ρ‚ΠΎΠ²Ρ‹ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ (X, Y) для отобраТСния Π½Π° ΡΠΊΡ€Π°Π½Π΅ слСдуСт ΠΏΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Π³Ρ€Π°Ρ„ичСскиС (Xg, Yg) ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌ:

Xg= Sx*X + dx,

Yg= ry-Sy*Y — dy,

Π“Π΄Π΅ X — цСлая Ρ‡Π°ΡΡ‚ΡŒ X, Sx, Sy— ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Π΅ ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌΡ‹Π΅ ΠΈΠ· ΡƒΡΠ»ΠΎΠ²ΠΈΡ

rx=Sx*Xmax+1

ry=Sx*Ymax+1

Xmax, Ymax— ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния гСомСтричСских ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

Π‘Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ dx, dy ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ смСщСниС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° экрана.

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ смСщСно Π² Ρ†Π΅Π½Ρ‚Ρ€ экрана ΠΏΡ€ΠΈ dx=rx/2, dy=ry/2.

Π’ Π³Ρ€Π°Ρ„ичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ пСрСмСщаСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° MoveTo (Ρ…, Ρƒ: Integer) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² Ρ‚ΠΎΡ‡ΠΊΡƒ экрана с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (Ρ…, Ρƒ).

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° MoveRel( dx, dy : Integer ) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° dx пиксСлов ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈ ΡΠΎΠΎΡ‚вСтствСнно Π½Π° dy ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ послСднСго полоТСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ указатСля. ΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния dx ΠΈ dy ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, Π° ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ — ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚.

Π’ ΡΠΈΡΡ‚Π΅ΠΌΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ дисплСя ось Y Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π° Π²Π½ΠΈΠ·, поэтому, Ссли ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π°Π΄ΠΎ пСрСнСсти Π²Π²Π΅Ρ€Ρ…, Ρ‚ΠΎ ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ dy Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

Для опрСдСлСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ полоТСния графичСского курсора ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

GetX: Integer;

GetY: Integer,

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ указатСля соотвСтствСнно ΠΏΠΎ ΠΎΡΠΈ X ΠΈ ΠΏΠΎ оси Y. ΠŸΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ указатСля ΠΈ ΠΎΠΏΡ€ΠΎΡ Π΅Π³ΠΎ мСстонахоТдСния Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Π΄Π°ΠΆΠ΅ Ссли Ρ€Π°Π±ΠΎΡ‚Π° происходит Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ устройства.

Π˜Π·ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ указатСля Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ LineTo, LineRel, OutText.

ВсС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΡ‡ΠΈΡΡ‚ΠΊΠΈ экрана (InitGraph, GraphDefaults, ClearDevice, SetGraphMode, SetViewPort ΠΈ ClearViewPort) ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (0,0).

РисованиС графичСских ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² ΠΈ Ρ„ΠΈΠ³ΡƒΡ€. Π›ΠΈΠ½ΠΈΠΈ ΠΈ ΠΈΡ… ΡΡ‚ΠΈΠ»ΠΈ

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Ρ‹Π²ΠΎΠ΄Π° Π»ΠΈΠ½ΠΈΠΈ (ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°) Π½Π° ΡΠΊΡ€Π°Π½ (Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ†Π²Π΅Ρ‚Π΅ ΠΈ ΡΡ‚ΠΈΠ»Π΅) ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:

Line (Π₯1, Y1, Π₯2, Y2: Integer)

Π—Π΄Π΅ΡΡŒ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π½Π°Ρ‡Π°Π»Π° (X1,Y1) ΠΈ ΠΊΠΎΠ½Ρ†Π° (X2,Y2) ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΅Ρ‰Π΅ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° рисования ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠ²:

1. Из Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² Ρ‚ΠΎΡ‡ΠΊΡƒ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (X, Y). ВыполняСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ

2. LineTo (Ρ…, Ρƒ: Integer)

3. ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. ПолоТСниС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ указатСля принимаСтся Π·Π° Π½Π°Ρ‡Π°Π»ΠΎ «Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…» ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (0,0) ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ся мСстополоТСниС ΠΊΠΎΠ½Ρ†Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° Π² Π½ΠΈΡ…. Π’Π°ΠΊΠΎΠ΅ построСниС Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°

4. LineRel( dx, dy : Integer )

ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ графичСского ΠΎΠΊΠ½Π°. ΠŸΡ€ΠΈ этом Ρ‡Π°ΡΡ‚ΡŒ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π΅Π·Π°Π½Π° (Π½ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ пСрСмСстится Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΠΎΠ½Ρ†Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°).

Π’ Π’ΡƒΡ€Π±ΠΎ ПаскалС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ стилСм Π»ΠΈΠ½ΠΈΠΉ: Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρƒ, Ρ‚ΠΈΠΏ (ΡΠΏΠ»ΠΎΡˆΠ½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ, ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€Π½Ρ‹Π΅ ΠΈ Ρ‚. ΠΏ.). Для этого ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹ стилСй ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ:

TYPE

LineSettingsType=RECORD

LineStyle

: Word;

{ ΡΡ‚ΠΈΠ»ΡŒ (Ρ‚ΠΈΠΏ) }

Pattern

: Word;

{ шаблон Ρ‚ΠΈΠΏΠ° }

Thickness

: Word;

{ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° }

END;

CONST

{ Для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ поля LineStyle :}

SolidLn

= 0

{ сплошная линия }

DottedLn

= 1

{ точСчная линия}

CenterLn

= 2

{ ΡˆΡ‚Ρ€ΠΈΡ…ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€Π½Π°Ρ линия}

DashedLn

= 3

{ пунктирная линия }

UserBitLn

= 4

{ Ρ‚ΠΈΠΏ Π»ΠΈΠ½ΠΈΠΈ Π·Π°Π΄Π°Π½ явно шаблоном}

{ Для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ поля Thickness: }

NormWidth = 1

{ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ Π² ΠΎΠ΄ΠΈΠ½ пиксСл}

ThickWidth = 3

{ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ Π² Ρ‚Ρ€ΠΈ пиксСла}

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ стилС линяй, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ

GetLineSettings( VAR LineType : LineSettingsType)

А Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ Π»ΠΈΠ½ΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ SetLineStyle( LineStyle, Pattern, Thickness : Word ), подставив Π² Π½Π΅Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСния. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ LineStyle Π½Π΅ Ρ€Π°Π²Π΅Π½ UserBitLn, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Pattern Π½Π΅ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΠΈ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ задаСтся Π½ΡƒΠ»Π΅ΠΌ.

Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° LineStyle Ρ€Π°Π²Π½ΠΎ UserBitLn. Π’ ΡΡ‚ΠΎΠΌ случаС ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠ° Π»ΠΈΠ½ΠΈΠΈ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ сообраТСниями:

1. Линия прСдставляСт собой ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ 16 пиксСлов. Если Π΄Π»ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΈ Π½Π΅ Π΄Π΅Π»ΠΈΡ‚ся Π½Π° 16 Π½Π°Ρ†Π΅Π»ΠΎ, Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ обрСзаСтся.

2. МоТно Π·Π°Π΄Π°Ρ‚ΡŒ шаблон-ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈ свСтящихся ΠΈΠ»ΠΈ ΠΏΠΎΠ³Π°ΡˆΠ΅Π½Π½Ρ‹Ρ… пиксСлов. Π•Π³ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΊΠ°ΠΊ мноТСство Π΅Π΄ΠΈΠ½ΠΈΡ† ΠΈ Π½ΡƒΠ»Π΅ΠΉ: 1 — свСтится, 0 — Π½Π΅Ρ‚. НапримСр, ΠΌΠ΅Π»ΠΊΠΈΠΉ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€ задаСтся ΠΊΠ°ΠΊ 1 100 110 011 001 100 — всСго 16 разрядов.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π’ΡƒΡ€Π±ΠΎ Паскаль Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‡ΠΈΡΠ»Π°ΠΌΠΈ, прСдставлСнными Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ пСрСвСсти ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ число Π² Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ (52 428) ΠΈΠ»ΠΈ Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈΡ€ΠΈΡ‡Π½ΡƒΡŽ ($Π‘Π‘Π‘Π‘) систСму счислСния ΠΈ ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ фактичСским ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π½Π° ΠΌΠ΅ΡΡ‚ΠΎ Pattern ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ SetLineStyle.

Uses Graph;

{ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Graph}

{$I Initgraf. pas}

{ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ}

Var

x: Integer;

BEGIN

Grlrtit;

{инициализация Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ}

X: = GetMaxX;

{Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ экрана ΠΏΠΎ X}

SetLineStyle (DottedLn, 0, NormWidth);

Line (0, 10, x, 10);

{тонкая сплошная линия}

SetLineStyle (CenterLn, 0, NormWidth);

Line (0, 20, x, 20);

{ΡˆΡ‚Ρ€ΠΈΡ…ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€Π½Π°Ρ линия}

SetLineStyle (UserBitLn, $CCCC, NonriWidth);

Line{ 0, 30, x, 30);

{ линия 1 100 110 011 001 100 }

SetLineStyle (UserBitLn, $B38 °F, NormWidth);

Line (0, 40, x, 40);

{ линия 1 011 001 110 001 111 }

SetLineStyle (UserBitLn, $ 4C70, NormWidth);

Line (0, 50, x, 50);

{ линия 100 110 001 110 000 }

ReadLn;

{ ΠΏΠ°ΡƒΠ·Π° Π΄ΠΎ Π½Π°ΠΆΠ°Ρ‚ия Π²Π²ΠΎΠ΄Π° }

SetLineStyle (DottedLn, 0, ThickWidth);

Line (0. 10, x, 10);

{ толстая сплошная линия }

SetLineStyle (CenterLn, 0, ThickWidth);

Line (0, 20, x, 20);

{ ΡˆΡ‚Ρ€ΠΈΡ…-пунктирная линия}

SetLineStyle (UserBitLn, $Π‘Π‘Π‘Π‘, ThickWidth);

Line (0, 30, x, 30);

{ линия 1 100 110 011 001 100 }

SetLineStyle (UserBitLn, $B38 °F, ThickWidth);

Line (0, 40, x, 40);

{ линия 1 011 001 110 001 111 }

SetLineStylef UserBitLn, $ 4Π‘70, ThickWidth);

Line (0, 50, x, 50);

{ линия 100 110 001 110 000}

ReadLn;

{ ΠΏΠ°ΡƒΠ·Π° Π΄ΠΎ Π½Π°ΠΆΠ°Ρ‚ия Π²Π²ΠΎΠ΄Π°}

CloseGraph

{ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ}

END.

Π’ ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π° ΡΠΊΡ€Π°Π½Π΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π° рисуСтся ΠΏΡΡ‚ΡŒ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ Ρ€Π°Π·Π½ΠΎΠΉ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρ‹: Π΄Π²Π΅ нарисованы ΠΏΠΎ ΡΠΈΡΡ‚Π΅ΠΌΠ½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, Π° Ρ‚Ρ€ΠΈ — ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ Π½Π°ΠΌΠΈ.

НазначСниС стиля Π»ΠΈΠ½ΠΈΠΉ влияСт Π½Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅ всСх ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, выводящих Π½Π° ΡΠΊΡ€Π°Π½ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΈ ΠΈΠ»ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, ΠΈΠ· Π½ΠΈΡ… состоящиС. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, выводящиС Π½Π° ΡΠΊΡ€Π°Π½ Π΄ΡƒΠ³ΠΈ, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρƒ, Π·Π°Π΄Π°Π½Π½ΡƒΡŽ Π² ΡΡ‚ΠΈΠ»Π΅.

ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ сТатия изобраТСния

Если Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

MoveTo (100, 100);

LineRel (20, 0); LineRel (0, 20);

LineRel (-20, 0); LineRel (0, -20);

Ρ‚ΠΎ Π½Π° ΡΠΊΡ€Π°Π½Π΅, скорСС всСго, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ сТатый ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. ΠŸΠΎΡ…ΠΎΠΆΠ°Ρ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ, Ссли «Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ» Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠ² прямых ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡Π΅ΠΊ: получится эллипс. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ высоты экрана ΠΊ ΡˆΠΈΡ€ΠΈΠ½Π΅ Π½Π΅ Ρ€Π°Π²Π½ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅ΠΉ способности ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΊ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅ΠΉ способности ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ. Для ΡƒΡ‡Π΅Ρ‚Π° этого нСравСнства Π² Π³Ρ€Π°Ρ„ичСском стандартС BGI вводится ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ коэффициСнтом сТатия изобраТСния (aspect ratio). Π•Π³ΠΎ значСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½. НапримСр, для ΠŸΠš IBM PC/XT/AT стандартныС ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ высоты экрана ΠΊ Π΅Π³ΠΎ ΡˆΠΈΡ€ΠΈΠ½Π΅, Ρ€Π°Π²Π½ΠΎΠ΅ 0,75. ΠŸΡ€ΠΈ этом Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² колСблСтся ΠΎΡ‚ 640×200 для CGA Π΄ΠΎ 1024×768 IBM8514, ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ GetMaxY ΠΊ GetMaxX ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΎΡ‚ 0,3125 (640×200) Π΄ΠΎ 0,75 (640×480, 1024×768). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Π΄Π»ΠΈΠ½Ρ‹ оси экрана приходится Ρ€Π°Π·Π½ΠΎΠ΅ количСство пиксСлов ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ, Π° ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ производятся с ΠΏΠΈΠΊΡΠ΅Π»Π°ΠΌΠΈ, Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ вмСсто окруТности ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ эллипс, Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ»ΡƒΠΎΡΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π°Π²Π½Π° радиусу, Π° Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ — радиусу, Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Π½Π° ΠΊΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ сТатия изобраТСния.

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠ΅ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ нСудобство. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΈΠ· Π½ΠΈΡ…

GetAspectRatio (VAR А, Π’: Word)

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… A ΠΈ B Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ, ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… (А/Π’) соотвСтсвуСт коэффициСнту сТатия изобраТСния. Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ вСщСствСнного ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° (Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ быстродСйствиС), поэтому всС Π½Π΅Ρ†Π΅Π»Ρ‹Π΅ значСния ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… Ρ†Π΅Π»Ρ‹Ρ….

Другая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°,

SetAspectRatio (А, Π’: Word)

ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ коэффициСнт сТатия Π½Π° ΠΊΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚, Ρ€Π°Π²Π½Ρ‹ΠΉ (А/Π’). ΠŸΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ коэффициСнта сТатия влияСт Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ всСх ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, выводящих окруТности, эллипсы, Π΄ΡƒΠ³ΠΈ ΠΈ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ GetAspectRatio. ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ, домноТая Π΅Π³ΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ (систСмный) коэффициСнт сТатия.

{ ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° }

Program QuadroDem;

Uses Graph;

const l=100;

Var

d, r, e:integer;

a, b :word;

Begin

d:=Detect;

InitGraph (d, r,'');

e:=GraphResult;

if e<>grOk then

writeln (GraphErrorMsg (e))

else

begin

GetAspectRatio (a, b);

Rectangle (20,20,round (l*(b/a)), l);

readln;

CloseGraph;

end

End.

ΠžΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΠΈ, эллипсы ΠΈ Π΄ΡƒΠ³ΠΈ

Для изобраТСния окруТностСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°

Circle(x, Ρƒ: Integer; Radius: Word)

Π—Π΄Π΅ΡΡŒ (X, Y) — ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ†Π΅Π½Ρ‚Ρ€Π° окруТности, Radius — Π΅Π΅ Ρ€Π°Π΄ΠΈΡƒΡ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ, Ссли коэффициСнт изобраТСния соотвСтствуСт принятому BGI-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ графичСского Ρ€Π΅ΠΆΠΈΠΌΠ°. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π½Π° ΡΠΊΡ€Π°Π½Π΅ появится эллипс, вытянутый ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ (коэффициСнт сТатия большС принятого ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) ΠΈΠ»ΠΈ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ (коэффициСнт мСньшС принятого).

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph прСдставлСны ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ рисования эллипсов, Π΄ΡƒΠ³, сСкторов ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ сСктор, Π·Π°Π»ΠΈΡ‚Ρ‹ΠΉ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. ВсС ΠΎΠ½ΠΈ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ StartAngle ΠΈ EndAngle, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΡƒΠ³ΠΎΠ» Π΄ΡƒΠ³ΠΈ. На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° систСма графичСских ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ.

ΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ оси X (слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ) принято Π·Π° 0Β°, ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ оси Y — Π·Π° 90Β°, Ρ‚. Π΅. ΡƒΠ³Π»Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ€ΡΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ направлСния оси X ΠΏΡ€ΠΎΡ‚ΠΈΠ² часовой стрСлки. ВсС значСния этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΄Π°ΡŽΡ‚ΡΡ Π² Π³Ρ€Π°Π΄ΡƒΡΠ°Ρ….

НиТС пСрСчислСны ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ рассматриваСмого класса:

РисованиС Π΄ΡƒΠ³ΠΈ радиуса Radius ΠΈΠ· Ρ†Π΅Π½Ρ‚Ρ€Π° с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (X, Y) ΠΎΡ‚ ΡƒΠ³Π»Π° StartAngle Π΄ΠΎ EndAngle:

Arc (X, Y: Integer; StartAngle, EndAngle, Radius: Word)

ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ коэффициСнта сТатия изобраТСния Π²ΠΈΠ΄ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄ΡƒΠ³ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… окруТностСй.

РисованиС эллиптичСской Π΄ΡƒΠ³ΠΈ с Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:

Ellipse (X, Y: Integer; StartAngle, EndAngle, XRadius, YRadius: Word)

Π³Π΄Π΅ XRadius ΠΈ YRadius — Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ полуосСй соотвСтствСнно. Оси эллипса ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ осям X ΠΈ Y. Для изобраТСния ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ эллипса Π½Π°Π΄ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠ³Π»Ρ‹ 0Β° ΠΈ 360Β°. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ коэффициСнта сТатия ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ‚ Π½Π° Π΅Π³ΠΎ Π²ΠΈΠ΄.

Π£Π³Π»ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для нашСй систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ — ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π½Π°Ρ‡Π°Π»Π° ΠΈ ΠΊΠΎΠ½Ρ†Π° Π΄ΡƒΠ³ окруТности ΠΈΠ»ΠΈ эллипса Π½Π΅ ΠΈΠ½Π°Ρ‡Π΅, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ извСстныС тригономСтричСскиС выраТСния. Но Π² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… вычислСниях Π½Π΅Ρ‚ нСобходимости, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ всС Ρ€Π°Π²Π½ΠΎ извСстны Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ Arc, Ellips, Sector ΠΈ PieSlice.

Π˜Π·Π²Π»Π΅Ρ‡ΡŒ ΠΊΠΎΠ½Ρ†Π΅Π²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π΄ΡƒΠ³ позволяСт ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°

GetArcCoords (VAR ArcCoords: ArcCoordsType)

Π’ΠΈΠΏ ArcCoordsType объявлСн Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

TYPE

ArcCoordsType = RECORD

X, Y

:Integer;

{Ρ†Π΅Π½Ρ‚Ρ€}

XStart, YStart

:Integer;

{Π½Π°Ρ‡Π°Π»ΠΎ}

XEnd, YEnd

:Integer;

{ΠΊΠΎΠ½Π΅Ρ†}

END;

РассматриваСмая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ послСднСго Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ рисования Π΄ΡƒΠ³ΠΈ ΠΈΠ»ΠΈ сСктора.

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² ΠΈ Π»ΠΎΠΌΠ°Π½Ρ‹Ρ…

Для построСния ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° достаточно Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Rectangle (Π₯1, Y1, Π₯2, Y2: Integer), которая ΠΈΠ·ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ Π½Π° ΡΠΊΡ€Π°Π½Π΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ с Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΡŽ (X1, Y1) — (X2, Y2). Для рисования ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° Π½Π°Π΄ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ высоту ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Ρ€Π°Π²Π½ΡΠ»Π°ΡΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ Π½Π° ΠΊΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ сТатия изобраТСния.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ с Π±ΠΎΠ»ΡŒΡˆΠΈΠΌ количСством Π²Π΅Ρ€ΡˆΠΈΠ½ (Π² Ρ‚ΠΎΠΌ числС ΠΈ Π½Π΅Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹Π΅), ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ

DrawPoly (NumPoints: Word; VAR PolyPoints)

Она позволяСт Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΡΠΊΡ€Π°Π½Π΅ дисплСя Π»ΡŽΠ±ΡƒΡŽ Π»ΠΎΠΌΠ°Π½ΡƒΡŽ, Π·Π°Π΄Π°Π½Π½ΡƒΡŽ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ мноТСства Ρ‚ΠΎΡ‡Π΅ΠΊ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ слоТная гСомСтричСская Ρ„ΠΈΠ³ΡƒΡ€Π°, Ρ‚Π°ΠΊ ΠΈ Ρ‚абличная матСматичСская функция. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ NumPoints — это количСство Ρ‚ΠΎΡ‡Π΅ΠΊ Π»ΠΎΠΌΠ°Π½ΠΎΠΉ (Π·Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ с N Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ, Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NumPoints Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ большС числа N, Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° (N+1) -ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ). Под бСстиповым ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ PolyPoints понимаСтся какая-Π»ΠΈΠ±ΠΎ пСрСмСнная, состоящая ΠΈΠ· Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π²ΡƒΡ…ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½Ρ‹Ρ… записСй. Поля ΠΊΠ°ΠΆΠ΄ΠΎΠΉ записи Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ X-ΠΈ Y ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ. Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph Π²Π²Π΅Π΄Π΅Π½ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ:

TYPE

PointType=RECORD

X, Y: Integer; {ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ}

END;

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π±ΠΎΡ€ Ρ‚ΠΎΡ‡Π΅ΠΊ организуСтся ΠΊΠ°ΠΊ массив ΠΈΠ· Π·Π°ΠΏΠΈΡΠ΅ΠΉ Ρ‚ΠΈΠΏΠ° PointType (ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊ Ρ‚Π°ΠΊΠΎΠΉ структурС приводится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° PolyPoint ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ DrawPoly). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ DrawPoly ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π΄Π°Π»Π΅Π΅.

USES Graph;

{ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Graph }

{$I initgraf. pas}

{ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ}

CONST

Pi * 3.14 151 828;

{константа Pi (Π·Π°ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ)}

Pi2 = 2 * Pi;

{Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΎΡ‚ Pi…}

Pi001 = 0.01* Pi;

VAR

angle: Real;

sine_func: Array [1.201] of PointType ;

{ массив Ρ‚ΠΎΡ‡Π΅ΠΊ}

maxy, i: Integer;

BEGIN

Grlnit;

{инициализация Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ}

maxy := GetMaxY div 2;

{сСрСдина экрана ΠΏΠΎ ΠΎΡΠΈ Y}

angle := 0.0;

{Π·Π°Π΄Π°Π½ΠΈΠ΅ стартовых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ}

i := 0;

{ счСтчик Ρ‚ΠΎΡ‡Π΅ΠΊ Π² sine_func}

repeat

{ Ρ†ΠΈΠΊΠ» заполнСния sine_func }

Inc (i);

sine_func[i]. x:= Round (100 * angle) + 10;

sine_func[i]. y:= Round (100 * Sin (angle)) + maxy;

angle := angle + Pi001;

until angle > Pi2;

DrawPoly (i, sine_func) ;

{ рисованиС Π³Ρ€Π°Ρ„ΠΈΠΊΠ° синуса}

ReadLn;

{ΠΏΠ°ΡƒΠ·Π° Π΄ΠΎ Π½Π°ΠΆΠ°Ρ‚ия Π²Π²ΠΎΠ΄Π°}

CloseGraph

{Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ}

END.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DrawPoly ΠΌΠΎΠΆΠ½ΠΎ вывСсти Π³Ρ€Π°Ρ„ΠΈΠΊ части Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Для этого достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΌ массивС Π½ΠΎΠΌΠ΅Ρ€ n ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ рассматриваСмого элСмСнта (Ρ‚.Π΅. Ρ‚ΠΎΡ‡ΠΊΠΈ), Π° Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ — количСство рассматриваСмых Ρ‚ΠΎΡ‡Π΅ΠΊ, начиная с n-ΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

DrawPoly (20, sine_func [100]);

Π’Π°ΠΊΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π»ΠΎΠΌΠ°Π½ΡƒΡŽ линию ΠΏΠΎ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ с Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ 100, 101,…, 119.

ΠŸΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ количСства Ρ‚ΠΎΡ‡Π΅ΠΊ, соизмСримого со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ GetMaxX, ΠΈ ΠΏΡ€ΠΈ нСсплошном стилС Π»ΠΈΠ½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ шаг ΠΌΠ΅ΠΆΠ΄Ρƒ сосСдними Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ соотвСтствуСт ΡˆΠΈΡ€ΠΈΠ½Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€ΠΎΠΌ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ линия ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π½Π° ΡΠΊΡ€Π°Π½Π΅. Надо Π»ΠΈΠ±ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ число Ρ‚ΠΎΡ‡Π΅ΠΊ, Π»ΠΈΠ±ΠΎ ΠΈΠ·Π±Ρ€Π°Ρ‚ΡŒ сплошной Ρ‚ΠΈΠΏ Π»ΠΈΠ½ΠΈΠΈ.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Π°ΠΌΠΈ Π·Π°Π»ΠΈΠ²ΠΊΠΈ (заполнСния)

Рассмотрим ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ Π³Π°ΠΌΠΌΠΎΠΉ изобраТСния Π½Π° Π΄ΠΈΡΠΏΠ»Π΅Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ опрСдСляСт ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ разборчивости ΠΈ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ изобраТСния, Π½ΠΎ ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ„изиологичСскоС состояниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π—Π°Π΄Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π·Π°Π»ΠΈΠ²ΠΊΠΈ

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph прСдусмотрСны ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ (Π·Π°Π»ΠΈΡ‚ΡŒ) ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ «ΡƒΠ·ΠΎΡ€ΠΎΠΌ» Π»ΡŽΠ±ΡƒΡŽ Π·Π°ΠΌΠΊΠ½ΡƒΡ‚ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ изобраТСния. Π’ΠΈΠ΄ «ΡƒΠ·ΠΎΡ€Π°» задаСтся Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ шаблоном Π·Π°Π»ΠΈΠ²ΠΊΠΈ. Π’ Π’ΡƒΡ€Π±ΠΎ ПаскалС ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ряд стандартных шаблонов, Π½ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ собствСнныС.

НазначСниС шаблона заполнСния (Π·Π°Π»ΠΈΠ²ΠΊΠΈ) производится ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ

SetFillStyle (Pattern: Word; Color: Word)

Π³Π΄Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Pattern опрСдСляСт Π²ΠΈΠ΄ шаблона Π·Π°Π»ΠΈΠ²ΠΊΠΈ, a Color — Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚. ВсС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Π΅ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Pattern ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph Π² Π²ΠΈΠ΄Π΅ констант:

CONST

EmptyFill

=0

{ сплошная Π·Π°Π»ΠΈΠ²ΠΊΠ° Ρ†Π²Π΅Ρ‚ΠΎΠΌ Ρ„ΠΎΠ½Π°}

SolidFill

=1

{ сплошная Π·Π°Π»ΠΈΠ²ΠΊΠ° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ}

LineFill

=2

{ Π·Π°Π»ΠΈΠ²ΠΊΠ° Ρ‚ΠΈΠΏΠ° ===}

LtSlashFill

=3

{ Π·Π°Π»ΠΈΠ²ΠΊΠ° Ρ‚ΠΈΠΏΠ° ///}

SlashFill

=4

{ Π·Π°Π»ΠΈΠ²ΠΊΠ° ΠΆΠΈΡ€Π½Ρ‹ΠΌΠΈ линиями Ρ‚ΠΈΠΏΠ° ///}

BkSlashFill

=5

{ Π·Π°Π»ΠΈΠ²ΠΊΠ° ΠΆΠΈΡ€Π½Ρ‹ΠΌΠΈ линиями Ρ‚ΠΈΠΏΠ° \}

LtBkSlashFill

=6

{ Π·Π°Π»ΠΈΠ²ΠΊΠ° Ρ‚ΠΈΠΏΠ° \}

HatchFill

=7

{ Π·Π°Π»ΠΈΠ²ΠΊΠ° Ρ€Π΅Π΄ΠΊΠΎΠΉ ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²ΠΊΠΎΠΉ}

XHatchFill

=8

{ Π·Π°Π»ΠΈΠ²ΠΊΠ° частой ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²ΠΊΠΎΠΉ}

InterleaveFill

=9

{ Π·Π°Π»ΠΈΠ²ΠΊΠ° прСрывистой Π»ΠΈΠ½ΠΈΠ΅ΠΉ}

WideDotFill

=10

{ Π·Π°Π»ΠΈΠ²ΠΊΠ° Ρ€Π΅Π΄ΠΊΠΈΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ}

CloseDotFill

=11

{ Π·Π°Π»ΠΈΠ²ΠΊΠ° частыми Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ}

UserFill

=12

{ Π·Π°Π»ΠΈΠ²ΠΊΠ°, опрСдСлСнная программистом}

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° UserFill ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния Ρ‚ΠΈΠΏΠ° Π·Π°Π»ΠΈΠ²ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±Ρ‹Π» Π·Π°Π΄Π°Π½ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Для задания своСго Π½ΠΎΠ²ΠΎΠ³ΠΎ шаблона Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ

SetFillPattern (PattMatrix: FillPatternType; Color: Word)

ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π΅ΠΉ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ PattMatrix ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ шаблона Π·Π°Π»ΠΈΠ²ΠΊΠΈ ΠΈ ΡƒΠΊΠ°Π·Π°Π² Ρ†Π²Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Color. Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° SetFillStyle, Π½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ «ΡΠ°ΠΌΠΎΠ΄Π΅Π»ΡŒΠ½Ρ‹Π΅» ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° SetFillStyle ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, особСнно Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ… Π΄Π΅Π»ΠΎΠ²ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ (гистограммы, ΠΊΡ€ΡƒΠ³ΠΎΠ²Ρ‹Π΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ‚. ΠΏ.). Задавая хотя Π±Ρ‹ Ρ€Π°Π· Π½ΠΎΠ²Ρ‹ΠΉ шаблон, ΠΌΡ‹ Π°Π²Ρ‚оматичСски связываСм Π΅Π³ΠΎ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ UserFill ΠΈ Π΄Π°Π»Π΅Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всСми Ρ‚Ρ€ΠΈΠ½Π°Π΄Ρ†Π°Ρ‚ΡŒΡŽ шаблонами. Если ΠΆΠ΅ Π·Π°Π΄Π°Ρ‚ΡŒ UserFill, Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² ΠΏΠ΅Ρ€Π΅Π΄ этим Π½ΠΎΠ²Ρ‹ΠΉ шаблон, Ρ‚ΠΎ Ρ„ункция GraphResult Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -11 (grError) ΠΈ Π²ΡΠ΅ установки Π²ΠΈΠ΄Π° шаблона ΠΈ Ρ†Π²Π΅Ρ‚Π° останутся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌΠΈ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ устанавливаСтся шаблон SolidFill ΠΈ Ρ†Π²Π΅Ρ‚ с. Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ графичСского Ρ€Π΅ΠΆΠΈΠΌΠ°.

Π’ ΠΎΠ±Π΅ΠΈΡ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ… назначСния шаблона пСрСмСнная Color опрСдСляСт Ρ†Π²Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ исполняСтся шаблон. Π¦Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° ΠΏΡ€ΠΈ этом остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ.

{ ДСмонстрация стандартных Ρ‚ΠΈΠΏΠΎΠ² ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²ΠΊΠΈ }

Program FillStDem;

Uses CRT, Graph;

Var

d, r, e, i, j, x, y: integer;

Begin

d:=Detect;

InitGraph (d, r,'');

e:=GraphResult;

if e<>grOk then

writeln (GraphErrorMsg (e))

else

begin

SetGraphMode (0);

x:=GetMaxX div 9;

y:=GetMaxY div 7;

for j:=0 to 2 do

for i:=0 to 3 do

begin

Rectangle ((2*i)*x,(2*j+1)*y,

(2*i+1)*x,(2*j+2)*y);

SetFillStyle (i+j*4,j+1);

Bar ((2*i)*x+1,(2*j+1)*y+1,

(2*i+1)*x-1,(2*j+2)*y-1);

end;

readln;

CloseGraph;

end

End.

Π—Π°Π»ΠΈΠ²ΠΊΠ° областСй изобраТСния

Рассмотрим ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, нСпосрСдствСнно Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π»ΠΈΠ²ΠΊΡƒ. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Ρ†Π΅Π»Ρ‹ΠΉ ряд ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Ρ€ΠΈΡΡƒΡŽΡ‰ΠΈΡ… графичСскиС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΈ ΡΡ€Π°Π·Ρƒ ΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… ΠΈΡ… ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. ΠŸΠ΅Ρ€Π²Π°Ρ Π½ΠΈΡ… — ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°

Bar (X1, Y1, X2, Y2: Integer)

рисуСт ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, внутрСнняя ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°Π»ΠΈΡ‚Π° ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. Она ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π΄Π΅Π»ΠΎΠ²ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ для строСния столбчатых Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (X1,Y1) ΠΈ (X2, Y2) — ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡƒΠ³Π»ΠΎΠ² ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. Π•Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ наглядноС прСдставлСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ рисовании Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°

Bar3D (X1, Y1, X2, Y2: Integer; D3: Word; Top: Boolean)

Она рисуСт ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»Π΅ΠΏΠΈΠΏΠ΅Π΄, лицСвая сторона ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ заливаСтся ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, Π° Π³Π»ΡƒΠ±ΠΈΠ½Π° задаСтся Π² ΠΏΠΈΠΊΡΠ΅Π»Π°Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ D3. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’ΠΎΡ€ Π·Π°Π΄Π°Π΅Ρ‚ Ρ€Π΅ΠΆΠΈΠΌ отобраТСния Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ плоскости: True — ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ, False — Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ столбцы, стоящиС Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π΅. Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π΄Π²Π΅ константы для Π½Π΅Π΅:

CONST

TopOn = True;

{вСрхняя ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π½ΡƒΠΆΠ½Π°}

TopOff = False;

{вСрхняя ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½Π°}

{ ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»Π΅ΠΏΠΈΠΏΠ΅Π΄Π° }

Program Bar3Dem;

Uses CRT, Graph;

Var

d, r, e: integer;

Begin

d:=Detect;

InitGraph (d, r,'');

e:=GraphResult;

if e<>grOk then

writeln (GraphErrorMsg (e))

else

begin

Bar3d (80,100,120,180,15,TopOn);

Bar3d (150,150,190,180,15,TopOff);

Bar3d (230, 50,250,150,15,TopOn);

Bar3d (220,150,260,180,15,TopOn);

Bar3d (300,150,340,180,15,TopOff);

Bar3d (300, 50,340,150,15,TopOn);

readln;

CloseGraph;

end

End.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ «Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅» ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΡΠ΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ окруТностСй ΠΈ ΡΠ»Π»ΠΈΠΏΡΠΎΠ². РисованиС сСктора эллипса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π»ΠΈΡ‚ Ρ†Π²Π΅Ρ‚ΠΎΠΌ ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, осущСствляСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ

Sector (X, Y: Integer; StartAngle, EndAngle, XRadius, YRadius: Word)

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ смысл, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ… Arc, Ellipse. для задания ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΎΠ³ΠΎ сСктора Π½Π°Π΄ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ YRadius с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ коэффициСнта сТатия:

VAR

R, А, Π’: Word; {R — радиус ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΎΠ³ΠΎ сСктора}

BEGIN

GetAspectRatio (А, Π’);

Sector (100, 100, 0, 90, R, R * Longlnt (A) div Π’);

END.

Π­Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ эффСкта ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ

PieSlice (X, Y: Integer; StartAngle, EndAngle, Radius: Word)

которая рисуСт сСктор окруТности, ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ заливаСтся ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ заполнСния.

ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°

FillEllipse (X, Y: Integer; XRadius, YRadius: Word)

рисуСт эллипс Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ Π΅Π³ΠΎ ΠΏΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ смысл, ΠΊΠ°ΠΊ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Ellipse.

Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ слоТных гСомСтричСских Ρ„ΠΈΠ³ΡƒΡ€, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹, производится ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ

FillPoly (NumPoints: Word; VAR PolyPoints)

Π•Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ DrawPoly. ЕдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ. Однако всС Ρ€Π°Π²Π½ΠΎ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ соСдинСны Π»ΠΈΠ½ΠΈΠ΅ΠΉ, ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π»ΠΈΡ‚Π°.

USES Graph;

{ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Graph}

{$I initgraf. pas}

{ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ}

CONST

our_ figure: Array [1.4] of PointType =

(x: 319; y: 40),

{Π—Π°Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΊΠΎΠ½Ρ†ΠΎΠ² }

(x: 398; y: 146),

{ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠ², ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ сторонами}

(x: 240; Ρƒ: 146),

{гСомСтричСской}

(x:400; Ρƒ: 40));

{Ρ„ΠΈΠ³ΡƒΡ€Ρ‹}

BEGIN

Grlnit;

{ инициализация Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ}

SetFiUStyle (InterleaveFill, Red);

{ заданиС шаблона }

{ рисованиС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹}

FillPoly (SizeOf (our.figure) div SizeOf (PointType), our_figure);

ReadLn;

CloseGraph

END.

Ѐункция SizeOf (our_figure) Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ константы our_figure Π² Π±Π°ΠΉΡ‚Π°Ρ…, a SizeOf (PointType) — Ρ€Π°Π·ΠΌΠ΅Ρ€ памяти, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΉ ΠΎΠ΄Π½ΠΈΠΌ элСмСнтом Ρ‚ΠΈΠΏΠ° PointType. И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°

FloodFilt(X, Y: Integer; Border: Word)

Она Π·Π°Π»ΠΈΠ²Π°Π΅Ρ‚ всю ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π²ΠΎΠΊΡ€ΡƒΠ³ Ρ‚ΠΎΡ‡ΠΊΠΈ (X, Y), ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ линиями Ρ†Π²Π΅Ρ‚Π° Border. НапримСр, Ссли Ρ‚ΠΎΡ‡ΠΊΠ° (X, Y) находится Π²Π½ΡƒΡ‚Ρ€ΠΈ области, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ, Ρ‚ΠΎ Π²ΡΡ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π»ΠΈΡ‚Π° ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ ΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠΌ, установлСнными ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°ΠΌΠΈ SetFillPattern ΠΈΠ»ΠΈ SetFillStyle. Если ΠΆΠ΅ Ρ‚ΠΎΡ‡ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π²Π½Π΅ этой области, Ρ‚ΠΎ Π·Π°Π»ΠΈΡ‚Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ вСсь экран Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ этой области. Если ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π½Π΅ Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Π° сплошной Π»ΠΈΠ½ΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ экрана, Ρ‚ΠΎ ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ заполнится вСсь экран.

ΠžΠΏΡ€ΠΎΡ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π° ΠΈ Ρ„ΠΎΠ½Π°

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π·Π½ΠΎΠ΅ количСство Ρ†Π²Π΅Ρ‚ΠΎΠ², Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° ΡΠΊΡ€Π°Π½ Π² Π³Ρ€Π°Ρ„ичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅. Но Π΄Π»Ρ всСх BGI-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΎΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ 0.15. НумСрация ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΡ Ρ†Π²Π΅Ρ‚ΠΎΠ² ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с Ρ‚Π΅ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ для тСкстовых Ρ†Π²Π΅Ρ‚ΠΎΠ², Π° ΠΈΠΌΠ΅Π½Π° констант, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΡ… Ρ†Π²Π΅Ρ‚Π° (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Blink), ΠΏΡ€ΠΎΠ΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph.

ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ Ρ†Π²Π΅Ρ‚Π°, воспринимаСмый Π΄Π°Π½Π½Ρ‹ΠΌ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠΌ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ графичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

GetMaxColor: Word

На ΡΠΊΡ€Π°Π½Π΅ всСгда Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° ΠΈ Ρ†Π²Π΅Ρ‚ ΠΏΠ΅Ρ€Π°. ВсС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ изобраТСния Ρ„ΠΈΠ³ΡƒΡ€, Ссли Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ Π² ΡΠ΅Π±Π΅ явной установки Ρ†Π²Π΅Ρ‚Π°, Ρ€ΠΈΡΡƒΡŽΡ‚ эти Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Ρ†Π²Π΅Ρ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π° (ΠΊΠ°ΠΊ символы Π² Ρ‚Скстовом Ρ€Π΅ΠΆΠΈΠΌΠ΅). Π­Ρ‚ΠΎΡ‚ Ρ†Π²Π΅Ρ‚ устанавливаСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ

SetColor (Color: Word)

Π¦Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° — всСгда Π΅Π΄ΠΈΠ½ Π² ΠΏΠΎΠ»Π΅ экрана. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ

SetBkColor (Color: Word)

ПослС использования этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Ρ†Π²Π΅Ρ‚ экрана сразу ΠΆΠ΅ мСняСтся Π½Π° Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Color Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ GetMaxColor. Π¦Π²Π΅Ρ‚ΠΎΠΌ Ρ„ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой ΠΈΠ· Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ², Π² Ρ‚ΠΎΠΌ числС ΠΈ ΡΡ€ΠΊΠΈΠΉ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ ΠΏΡ€ΠΈ Ρ€Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° Ρ€Π°Π²Π΅Π½ 0 (Black), Π° Ρ†Π²Π΅Ρ‚ ΠΏΠ΅Ρ€Π° Ρ€Π°Π²Π΅Π½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GetMaxColor.

ВсСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ установки Ρ†Π²Π΅Ρ‚Π°.

Ѐункция GetColor : Word Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ†Π²Π΅Ρ‚Π° ΠΏΠ΅Ρ€Π°, Π° Ρ„ункция GetBkColor: Word Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Π»ΠΈΡ‚Ρ€ΠΎΠΉ

ΠŸΠ°Π»ΠΈΡ‚Ρ€Π° ΠΈ Π΅Π΅ Π°Π½Π°Π»ΠΈΠ·. ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ BGI-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ, называСтся ΠΏΠ°Π»ΠΈΡ‚Ρ€ΠΎΠΉ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· 16 Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ 0 Π΄ΠΎ 15 (Ρ‚Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для графичСских Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² EGA, VGA).

Π­Ρ‚ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… 640×480 для VGA, 640×350, 640×200 ΠΈ 320×200 для EGA ΠΊΠ°ΠΊ Π² Ρ‚Скстовом, Ρ‚Π°ΠΊ ΠΈ Π² Π³Ρ€Π°Ρ„ичСском Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ….

Числа ΠΎΡ‚ 0 Π΄ΠΎ 15, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для обозначСния Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΠΈΡ… Π΅Ρ‰Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚, «ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅» Ρ†Π²Π΅Ρ‚Π°. ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ Ρ†Π²Π΅Ρ‚Ρƒ присваиваСтся «Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ» Ρ†Π²Π΅Ρ‚ ΠΈΠ· Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹. НапримСр, для Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° EGA, выводящСго ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎ 16 Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚Π° Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΈΠ· ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ Π² 64 Ρ†Π²Π΅Ρ‚Π°, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉΡΡ Π² ΡΡ‚ΠΎΠΌ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π΅. А Π² Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π΅ VGA аппаратная ΠΏΠ°Π»ΠΈΡ‚Ρ€Π° содСрТит 256 Ρ†Π²Π΅Ρ‚ΠΎΠ². Для управлСния соотвСтствиСм ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph прСдусмотрСн ряд ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… практичСски всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠ°Π»ΠΈΡ‚Ρ€ΠΎΠΉ.

Рассмотрим ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π΅ΠΉ. Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ для описания ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹:

CONST

MaxColors = 15; {ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ Ρ†Π²Π΅Ρ‚Π°}

TYPE PaletteType=RECORD

Size

: Byte;

{Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹}

Colors: Array [0.MaxColors] of Shortlnt;

END;

ПолС Size содСрТит количСство Ρ†Π²Π΅Ρ‚ΠΎΠ² Π² ΠΏΠ°Π»ΠΈΡ‚Ρ€Π΅, Π° ΠΏΠΎΠ»Π΅ Colors содСрТит Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° Π² ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Size элСмСнтах массива. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ GetPalette ΠΈ GetDefaultPalette Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π² Ρ„актичСских ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° PaletteType:

GetDefaultPalette (VAR Palette: PaletteType);

GetPalette (VAR Palette: PaletteType);

Они ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ пСрвая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ устанавливаСтся ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ графичСского Ρ€Π΅ΠΆΠΈΠΌΠ°, Ρ‚. Π΅. ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π° Π²Ρ‚орая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ Ρ†Π²Π΅Ρ‚ΠΎΠ².

Ѐункция GetPaletteSize: Word

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚ΠΈΠΏΠ° Word, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠ΅ количСство Ρ†Π²Π΅Ρ‚ΠΎΠ² Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρƒ. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, эта функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π²Π½ΠΎΠ΅ GetMaxColor+1.

Установка ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹. Для установки ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Graph прСдставлСны Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Ρ€Π°Π·Π½ΠΎΠΉ слоТности. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°

SetPalette (ColorNum: Word; Color: Shortlnt)

управляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π² ΠΏΠ°Π»ΠΈΡ‚Ρ€Π΅. ColorNum — это Π½ΠΎΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°, Color — Π½ΠΎΠΌΠ΅Ρ€ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ Π½ΠΈΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ.

НапримСр, Π²Ρ‹Π·ΠΎΠ² SetPalette (0, Red) Π΄Π΅Π»Π°Π΅Ρ‚ красный Ρ†Π²Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Color ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ Ρ†Π²Π΅Ρ‚Π°, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°Ρ… EGA (0.63) ΠΈ VGA. ΠŸΡ€ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ функция GraphResult Π²Π΅Ρ€Π½Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ grError.

Π‘ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ графичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

ΠžΠΏΡ€ΠΎΡ пиксСлов. Π’ΡƒΡ€Π±ΠΎ Паскаль позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ прямой доступ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ пиксСлу экрана с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

GetPixel(X,Y: Integer).

Π­Ρ‚Π° функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° WordΠ½ΠΎΠΌΠ΅Ρ€ Ρ†Π²Π΅Ρ‚Π° пиксСла с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (X, Y). ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½ΠΎΠΌΠ΅Ρ€ Ρ†Π²Π΅Ρ‚Π° Π»Π΅ΠΆΠΈΡ‚ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 0.15, Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΌ являСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ младший Π±Π°ΠΉΡ‚.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пиксСлами Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Π»ΡŽΠ±ΠΎΠΌΡƒ пиксСлу экрана. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°

PutPixel (X, Y: integer; Color: Word); Π·Π°ΠΆΠΈΠ³Π°Π΅Ρ‚ Π½Π° ΡΠΊΡ€Π°Π½Π΅ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ X, Y ΠΏΠΈΠΊΡΠ΅Π» Ρ†Π²Π΅Ρ‚Π° Color.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ видСостраницами

ΠŸΠ°ΠΌΡΡ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ страницы, ΠΈΠ»ΠΈ видСостраницы. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Π³Ρ€Π°Ρ„ичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅ дСйствия производятся с Π½ΡƒΠ»Π΅Π²ΠΎΠΉ страницСй, поэтому практичСски Π²ΠΎ Π²ΡΠ΅Ρ… ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π±Ρ‹Π»ΠΎ Π²ΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ Ρ€ΠΈΡΡƒΡŽΡ‚ΡΡ Π½Π° ΡΠΊΡ€Π°Π½Π΅ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹. Однако Ссли Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π½Π΅Π½ΡƒΠ»Π΅Π²ΡƒΡŽ страницу (ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ такая доступна Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°, Ρ‚ΠΎ Π½Π° ΡΠΊΡ€Π°Π½Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΎΡ‚образится, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ являСтся нулСвая страница. Если ΠΆΠ΅ послС этого Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ «ΡΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ» страницу, Ρ‚ΠΎ ΠΎΠ½Π° появится Π½Π° ΡΠΊΡ€Π°Π½Π΅ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ (ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ: Π·Π° ΠΎΠ΄ΠΈΠ½ прямой ΠΏΡ€ΠΎΡ…ΠΎΠ΄ Π»ΡƒΡ‡Π° Π² ΠΊΠΈΠ½Π΅ΡΠΊΠΎΠΏΠ΅). ΠŸΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ всС это ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄Π²Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹:

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ