Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ОписаниС языка PascalABC.NETΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 38

Автор W Cat

{$omp parallel sections}

begin

сСкция 1;

сСкция 2;

...;

end;

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² Π±Π»ΠΎΠΊΠ΅ begin ... end, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π·Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ являСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ сСкциСй.

{$omp parallel sections}

begin

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 1;

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 2;

begin

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 3;

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 4;

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 5;

end;

end;

Π—Π΄Π΅ΡΡŒ описаны Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ сСкции, пСрвая – ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 1, вторая – ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ 2 ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΡ – Π±Π»ΠΎΠΊ begin ... end, состоящий ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² 3-5.

ВсС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, описанныС Π²Π½Π΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… сСкций, Π±ΡƒΠ΄ΡƒΡ‚ раздСляСмыми, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Ссли Π² сСкциях Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ эти сСкции, Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ячСйкС памяти. ВсС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ сСкции, Π±ΡƒΠ΄ΡƒΡ‚ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΉ сСкции, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹.

ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… сСкций Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли сСкции нСзависимы Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° – Ссли ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² любом порядкС, Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΈΡ….

Бинхронизация ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° critical

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° critical ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π·Π° Π½Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

{$omp critical имя}

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€;

Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ – участок ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ нСсколькими ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ.

Волько критичСскиС сСкции с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Если ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ ΡƒΠΆΠ΅ выполняСт ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ пытаСтся Π²ΠΎΠΉΡ‚ΠΈ Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ критичСской сСкции.

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ сСкции ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΎΠ±Ρ‰ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΡŒ Π΄Π°Π½Π½Ρ‹Ρ….

var a:integer:=0;

{$omp parallel for}

for var i:integer:=1 to 100 do

{$omp critical}

a:=a+1;

Π—Π΄Π΅ΡΡŒ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСсто Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ. Π’Π΅ΡΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ a:=a+1 выполнится ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ – Π΄Ρ€ΡƒΠ³ΠΈΠΌ. Однако использованиС критичСских сСкций ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ сниТаСт ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π·Π° счСт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния этих участков. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ всС Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° являСтся критичСской сСкциСй, поэтому вСсь Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

Но Π½Π΅ Π²ΠΎ всСх случаях использованиС критичСских сСкций ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… конструкций.

var a:integer := 0;

{$omp parallel sections}

begin

{$omp critical}

a:=1;

{$omp critical}

a:=a+1;

end;

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС выполнятся сСкции. Если пСрвая сСкция выполнится Ρ€Π°Π½ΡŒΡˆΠ΅, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ a Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ Π΄Π²ΡƒΠΌ, ΠΈΠ½Π°Ρ‡Π΅ – Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅.

ΠŸΡ€ΠΈ использовании критичСских сСкций Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. НапримСр, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ выполняСт ΠΊΠΎΠ΄, содСрТащий ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ A, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ критичСская сСкция B. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ выполняСт ΠΊΠΎΠ΄, содСрТащий ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ B, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ критичСская сСкция A. Π’ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΎΠΉ порядок выполнСния: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ А ΠΈ Π½Π΅ успСваСт Π²ΠΎΠΉΡ‚ΠΈ Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ Π’. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ Π’ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠΉΡ‚ΠΈ Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ А, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ эта сСкция ΡƒΠΆΠ΅ выполняСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ сСкция Π’ ΡƒΠΆΠ΅ выполняСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ. Оба ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

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

ΠœΠΎΠ΄ΡƒΠ»ΡŒ GraphABC прСдставляСт собой ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для создания нСсобытийных графичСских ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠΌ ΠΈ частично Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΌ стилС. РисованиС осущСствляСтся Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ графичСском ΠΎΠΊΠ½Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ рисования Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΊΠ½Π°Ρ… отсутствуСт. ΠšΡ€ΠΎΠΌΠ΅ этого, Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ GraphABC ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠ΅ события ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ элСмСнтарныС событийныС прилоТСния. Основная сфСра использования модуля GraphABC - ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ GraphABC основан Π½Π° графичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ GDI+, Π½ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€ΠΎ, ΠΊΠΈΡΡ‚ΡŒ ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚, Ρ‡Ρ‚ΠΎ позволяСт Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ графичСских ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ². К свойствам ΠΏΠ΅Ρ€Π°, кисти ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠΌ, Ρ‚Π°ΠΊ ΠΈ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΌ стилС. НапримСр, для доступа ΠΊ Ρ†Π²Π΅Ρ‚Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° SetPenColor(c) ΠΈ функция PenColor, Π° Ρ‚Π°ΠΊΠΆΠ΅ свойство Pen.Color.

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ GraphABC ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ самим графичСским ΠΎΠΊΠ½ΠΎΠΌ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ GraphABCControl, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ осущСствляСтся рисованиС. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ GraphABCControl Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ всю ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ графичСского ΠΎΠΊΠ½Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π° графичСскоС ΠΎΠΊΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнты управлСния, ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡƒΡŽ графичСским ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ сдСлано Π² модулях Robot ΠΈ Drawman).

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рисунками ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ класс Picture, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π° сСбС Ρ‚Π΅ ΠΆΠ΅ графичСскиС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π° экранС.

Π Π΅ΠΆΠΈΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ рисования Π½Π° экранС (LockDrawing) позволяСт ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ прорисовку лишь Π²ΠΎ внСэкранном Π±ΡƒΡ„Π΅Ρ€Π΅, послС Ρ‡Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Redraw Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ всС графичСскоС ΠΎΠΊΠ½ΠΎ. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ускорСния Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈ создания Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π±Π΅Π· мСрцания.

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ GraphABC ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ряд констант, Ρ‚ΠΈΠΏΠΎΠ², ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ классов для рисования Π² графичСском ΠΎΠΊΠ½Π΅. Они ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹:

ГрафичСскиС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ†Π²Π΅Ρ‚ΠΎΠΌ

Π¦Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ константы

ДСйствия с ΠΏΠ΅Ρ€ΠΎΠΌ: ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ДСйствия с ΠΏΠ΅Ρ€ΠΎΠΌ: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Pen

Π‘Ρ‚ΠΈΠ»ΡŒ ΠΏΠ΅Ρ€Π°

ДСйствия с ΠΊΠΈΡΡ‚ΡŒΡŽ: ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ДСйствия с ΠΊΠΈΡΡ‚ΡŒΡŽ: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Brush

Π‘Ρ‚ΠΈΠ»ΠΈ кисти

Π‘Ρ‚ΠΈΠ»ΠΈ ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²ΠΊΠΈ кисти

ДСйствия со ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ: ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ДСйствия со ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Font

Π‘Ρ‚ΠΈΠ»ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚Π°

ДСйствия с рисунками: класс Picture

ДСйствия с графичСским ΠΎΠΊΠ½ΠΎΠΌ: ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ДСйствия с графичСским ΠΎΠΊΠ½ΠΎΠΌ: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Window

ДСйствия с систСмой ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚: ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ДСйствия с систСмой ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Coordinate

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° рисования ΠΈ ускорСниС Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ

Π Π΅ΠΆΠΈΠΌΡ‹ рисования

Бобытия GraphABC

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ клавиш

ΠŸΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°


Π’ΠΈΠΏΡ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ модуля GraphABC

Color = System.Drawing.Color;

Π’ΠΈΠΏ Ρ†Π²Π΅Ρ‚Π°

Point = System.Drawing.Point;

Π’ΠΈΠΏ Ρ‚ΠΎΡ‡ΠΊΠΈ

GraphABCException = class(Exception) end;

Π’ΠΈΠΏ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ GraphABC

RedrawProc: procedure;

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Π°Ρ пСрСмСнная пСрСрисовки графичСского ΠΎΠΊΠ½Π°. Если Ρ€Π°Π²Π½Π° nil, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стандартная пСрСрисовка

DrawInBuffer: boolean;

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π»ΠΈ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ внСэкранном Π±ΡƒΡ„Π΅Ρ€Π΅

ГрафичСскиС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹

ГрафичСскиС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΠ΅ рисованиС Π² графичСском ΠΎΠΊΠ½Π΅. РисованиС осущСствляСтся Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΏΠ΅Ρ€ΠΎΠΌ (Π»ΠΈΠ½ΠΈΠΈ), Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΠΈΡΡ‚ΡŒΡŽ (Π·Π°Π»ΠΈΠ²ΠΊΠ° Π·Π°ΠΌΠΊΠ½ΡƒΡ‚Ρ‹Ρ… областСй) ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ (Π²Ρ‹Π²ΠΎΠ΄ строк).

procedure SetPixel(x,y: integer; c: Color);

Π—Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ пиксСл с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (x,y) Ρ†Π²Π΅Ρ‚ΠΎΠΌ c

procedure PutPixel(x,y: integer; c: Color);

Π—Π°ΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ пиксСл с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (x,y) Ρ†Π²Π΅Ρ‚ΠΎΠΌ c

function GetPixel(x,y: integer): Color;

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π²Π΅Ρ‚ пиксСла с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (x,y)

procedure MoveTo(x,y: integer);

УстанавливаСт Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ рисования Π² Ρ‚ΠΎΡ‡ΠΊΡƒ (x,y)

procedure LineTo(x,y: integer);

РисуСт ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ (x,y). ВСкущая позиция пСрСносится Π² Ρ‚ΠΎΡ‡ΠΊΡƒ (x,y)

procedure LineTo(x,y: integer; c: Color);

РисуСт ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ (x,y) Ρ†Π²Π΅Ρ‚ΠΎΠΌ c. ВСкущая позиция пСрСносится Π² Ρ‚ΠΎΡ‡ΠΊΡƒ (x,y)

procedure Line(x1,y1,x2,y2: integer);

РисуСт ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ (x1,y1) Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ (x2,y2)

procedure Line(x1,y1,x2,y2: integer; c: Color);

РисуСт ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ (x1,y1) Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ (x2,y2) Ρ†Π²Π΅Ρ‚ΠΎΠΌ c

procedure FillCircle(x,y,r: integer);

ЗаполняСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ окруТности с Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ (x,y) ΠΈ радиусом r

procedure DrawCircle(x,y,r: integer);

РисуСт ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ с Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ (x,y) ΠΈ радиусом r

procedure FillEllipse(x1,y1,x2,y2: integer);

ЗаполняСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ эллипса, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠΌ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½ (x1,y1) ΠΈ (x2,y2)

procedure DrawEllipse(x1,y1,x2,y2: integer);

РисуСт Π³Ρ€Π°Π½ΠΈΡ†Ρƒ эллипса, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠΌ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½ (x1,y1) ΠΈ (x2,y2)

procedure FillRectangle(x1,y1,x2,y2: integer);

ЗаполняСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½ (x1,y1) ΠΈ (x2,y2)

procedure FillRect(x1,y1,x2,y2: integer);

ЗаполняСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½ (x1,y1) ΠΈ (x2,y2)

procedure DrawRectangle(x1,y1,x2,y2: integer);

РисуСт Π³Ρ€Π°Π½ΠΈΡ†Ρƒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Ρ… Π²Π΅Ρ€ΡˆΠΈΠ½ (x1,y1) ΠΈ (x2,y2)