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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° модуля для автоматичСского размСщСния тСкстовых надписСй Π½Π° рисункС Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΌ графичСском Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅

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

Набор встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ VB достаточно ΠΎΠ±ΡˆΠΈΡ€Π΅Π½ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… созданы для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ приходится ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ программисту. Однако Π² ΡΠ»ΡƒΡ‡Π°Π΅ нСстандартных Π·Π°Π΄Π°Ρ‡ часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ситуация ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ высокоуровнСвых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΎ. Π’ ΡΡ‚ΠΎΠΌ случаС ΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ систСма Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Win32 API. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΅ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° модуля для автоматичСского размСщСния тСкстовых надписСй Π½Π° рисункС Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΌ графичСском Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ЦСль курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ — Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° модуля для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ — Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ графичСского Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. ΠžΠ±Ρ‰Π°Ρ Π·Π°Π΄Π°Ρ‡Π° модуля — автоматичСскоС Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ тСкстовых надписСй Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅.

НСобходимо ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для опрСдСлСния Ρ†Π΅Π½Ρ‚Ρ€Π° масс полигонального ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Visual Basic. Π Π°Π±ΠΎΡ‚Π° с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ осущСствляСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ подсистСмой ΠΎΠΏΠΈΡ€Π°ΡŽΡ‰Π΅ΠΉΡΡ Π½Π° ΠΏΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΡƒ win32 API, ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ gdi32.dll.

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

1. Π Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… поставлСнных условий.

2. ВСорСтичСскоС обоснованиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ.

3. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация.

4. ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΎΡ‚Ρ‡Π΅Ρ‚Π°.

ΠžΠ±Π·ΠΎΡ€ срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ

Условиями курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΎΠ³ΠΎΠ²ΠΎΡ€Π΅Π½Π° срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Visual Basic 6.0, Π° Ρ‚Π°ΠΊΠΆΠ΅ тСхнология Win32 API.

Π―Π·Ρ‹ΠΊ программирования Visual Basic.

Visual Basic прСдставляСт собой язык программирования высокого уровня. Π’ ΡΠΎΡΡ‚Π°Π²Π΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (IDE) являСтся языком для быстрого создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. IDE VB позволяСт Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс, прСдоставляСт простой доступ ΠΊ Π‘Π” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ установлСнныС Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.

Visual Basic Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠ΅ срСдство для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΡ‚ ΠΈΠ½Ρ‚СрфСйса Π΄ΠΎ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠΈ, ΠΈΠΌΠ΅Π΅Ρ‚ большой Π½Π°Π±ΠΎΡ€ встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ назначСния. Однако для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ стандартных срСдств языка Π±Ρ‹Π²Π°Π΅Ρ‚ нСдостаточно, Ρ‚ΠΎΠ³Π΄Π° программист ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ΅ win32 API для осущСствлСния Π²Ρ‹Π·ΠΎΠ²Π° ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ функциям ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

Набор встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ VB достаточно ΠΎΠ±ΡˆΠΈΡ€Π΅Π½ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… созданы для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ приходится ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ программисту. Однако Π² ΡΠ»ΡƒΡ‡Π°Π΅ нСстандартных Π·Π°Π΄Π°Ρ‡ часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ситуация ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ высокоуровнСвых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΎ. Π’ ΡΡ‚ΠΎΠΌ случаС ΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ систСма Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Win32 API. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΅ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ ΡΠΎΠΎΡ‚вСтствСнно ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ инструмСнтом для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ Π² ΡΡ€Π΅Π΄Π΅ Windows.

ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ° Win32 API

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ программирования Win32 API (Application Programming Interface) — это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для управлСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Windows. Win32 API состоит ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, поставляСмых Π² Π²ΠΈΠ΄Π΅ динамичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (Dynamic Link Libraries — DLL), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ доступ ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ям ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

Win32 API ΠΌΠΎΠΆΠ΅Ρ‚ интСнсивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ возмоТностСй Visual Basic. Для использования Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² API ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π΅Ρ‚ нСобходимости Π²Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π² Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

ВСорСтичСскоС обоснованиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ создания полигонального ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

НСобходимо ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ всСх Π΅Π³ΠΎ Ρ‚ΠΎΡ‡Π΅ΠΊ. ΠŸΡ€ΠΎΡ‰Π΅ всСго Π·Π°Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° устройства Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½.

Для Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ событиС MouseDown ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° PictureBox, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ ΠΏΠΎΠ»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° — ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ мСста Ρ‰Π΅Π»Ρ‡ΠΊΠ°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… расчСтов. ΠŸΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚Π½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€ срСдств модСлирования ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅ΠΉ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ доступныС Visual Basic выдСляСт Ρ‚Ρ€ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ.

1. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ массива ΠΈΠ· Π΄Π²ΡƒΡ… элСмСнтов Array (x, y), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ элСмСнтом массива содСрТащСго всС Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°.

2. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ всСх Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° Π² Π΄Π²ΡƒΡ… массивах, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для x, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для y.

3. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ Ρ‚ΠΈΠΏΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΌ массивС.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ нСдостаточно ΡƒΠ΄ΠΎΠ±Π΅Π½ Π²Π²ΠΈΠ΄Ρƒ Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ΄Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ массивом. НСдостаточно понятный ΠΈ Π½Π°Π³Π»ΡΠ΄Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ цСлСсообразно Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ для этой Ρ†Π΅Π»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ‚ΠΈΠΏ, принятый ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Win32 API:

Public type POINTAPI x as Long y as Long

End type

ЗаписываСм ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ ΡΠΎΡ…раняСм Π΅Ρ‘ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ массивС Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°.

ПослС Π²Π²ΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ отрисовку сцСны.

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ ΠΌΡ‹ΡˆΠΈ ΠΏΠΎ ΠΏΠΎΠ»ΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ Ρ„Π°Π½Ρ‚ΠΎΠΌΠ½ΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ нахоТдСния ΠΌΡ‹ΡˆΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„Π°Π½Ρ‚ΠΎΠΌΠ½ΠΎΠ΅ Ρ€Π΅Π±Ρ€ΠΎ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°. ПослС создания хотя Π±Ρ‹ Ρ‚Ρ€Π΅Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° отобраТаСтся ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²Π°Π½Π½Π°Ρ линия, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Ρ€Π΅Π±Ρ€ΠΎ послСднСС Ρ€Π΅Π±Ρ€ΠΎ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°, Π² ΡΠ»ΡƒΡ‡Π°Π΅ Ссли Π²Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½.

Π’Π²ΠΎΠ΄ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ Ρ‰Π΅Π»Ρ‡ΠΊΠ° Π½Π° ΠΏΠΎΠ»Π΅, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ устанавливаСтся послСдняя Π²Π΅Ρ€ΡˆΠΈΠ½Π° ΠΈ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ Π΅Ρ‘ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ с ΠΏΠ΅Ρ€Π²ΠΎΠΉ.

НахоТдСниС Ρ†Π΅Π½Ρ‚Ρ€Π° масс

Π’ ΡΠΎΠΎΡ‚вСтствии с ΡƒΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹, линия ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ позиционируСтся надпись Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Ρ‡Π΅Ρ€Π΅Π· Ρ†Π΅Π½Ρ‚Ρ€ масс ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°.

Для нахоТдСния Ρ†Π΅Π½Ρ‚Ρ€Π° масс Π²Ρ‹ΠΏΡƒΠΊΠ»ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ всСх Π΅Π³ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½.

Π’ΠΎΠ³Π΄Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ†Π΅Π½Ρ‚Ρ€Π° масс ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ сумма ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π²Π΅Ρ€ΡˆΠΈΠ½ отнСсСнная ΠΊ ΠΈΡ… ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Ρƒ, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами срСднСС арифмСтичСскоС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π²Π΅Ρ€ΡˆΠΈΠ½:

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ элСмСнтов интСрфСйса ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ВСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅. Π¨Ρ€ΠΈΡ„Ρ‚ тСкста выбираСтся ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «font» ΠΈΠ· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π²Ρ‹Π±ΠΎΡ€Π° ΡˆΡ€ΠΈΡ„Ρ‚Π°. Π”ΠΈΠ°Π»ΠΎΠ³ Π²Ρ‹Π±ΠΎΡ€Π° ΡˆΡ€ΠΈΡ„Ρ‚Π° создаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Common Dialog, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ‡ΠΈΡΠ»ΠΎ стандартных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² для Windows XP.

Линия ΠΈ Ρ‚Скст отобраТаСтся ΠΏΠΎΠ΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΡƒΠ³Π»ΠΎΠΌ. ВвСсти ΡƒΠ³ΠΎΠ» ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΡƒΠΊΠ°Π·Π°Π² Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π³Ρ€Π°Π΄ΡƒΡΠ°Ρ… Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»Π΅, Π»ΠΈΠ±ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° VScroll.

Π Π°Π±ΠΎΡ‡Π΅Π΅ ΠΏΠΎΠ»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ прСдставлСно ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ PictureBox, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Для Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΊΠ½ΠΎ сохраняло ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Для этого ΠΌΡ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ свойство AutoRedraw Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True, это нСсколько замСдляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ «ΠΏΠΎΡΡ‚оянным». ПослС отрисовки Π½Π° Ρ‚Π°ΠΊΠΎΠΌ PictureBox всякий Ρ€Π°Π· Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Refresh для отобраТСния рисунка.

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сцСны происходит Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ этапов.

Π‘Π½Π°Ρ‡Π°Π»Π° рисованиС ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π°, Π·Π°Ρ‚Π΅ΠΌ рисованиС Ρ†Π΅Π½Ρ‚Ρ€Π° масс, рисованиС Π»ΠΈΠ½ΠΈΠΈ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ тСкста.

РисованиС полигона

Для рисования ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π΄ΠΎ ΡΠΈΡ… ΠΏΠΎΡ€, ΠΏΡ€ΠΎΠ±Π΅Π³Π°Π΅ΠΌ ΠΏΠΎ Π²ΡΠ΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ Π² Ρ†ΠΈΠΊΠ»Π΅. Π’ΠΎΡ‡ΠΊΠ° (Π²Π΅Ρ€ΡˆΠΈΠ½Π°) отобраТаСтся Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ Π² Π²ΠΈΠ΄Π΅ окруТности. Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π° ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° рисуСтся ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ. ПослСдняя Ρ‚ΠΎΡ‡ΠΊΠ° соСдиняСтся с ΠΏΠ΅Ρ€Π²ΠΎΠΉ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ рисования.

РисованиС Ρ†Π΅Π½Ρ‚Ρ€Π° масс ΠΈ Π»ΠΈΠ½ΠΈΠΈ проходящСй Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Π³ΠΎ

Π¦Π΅Π½Ρ‚Ρ€ масс находится ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌ Π² Π³Π»Π°Π²Π΅ 3.2. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ΡΡ Ρ†Π΅Π½Ρ‚Ρ€ масс Π² Π²ΠΈΠ΄Π΅ Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΡ€ΡƒΠ³Π°, красного Ρ†Π²Π΅Ρ‚Π°. Линия ΠΆΠ΅, которая ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· Ρ†Π΅Π½Ρ‚Ρ€ масс рассчитываСтся исходя ΠΈΠ· ΡƒΠ³Π»Π° ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°.

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ тСкста.

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ тСкста Π½ΡƒΠΆΠ½Ρ‹ΠΌ для нас ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ осущСствляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌ устройство Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ тСкст, Π² Π½Π°ΡˆΠ΅ΠΌ случаС это PictureBox — Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ ΠΏΠΎΠ»Π΅. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ тСкст ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ API Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ TextOut.

Для конфигурирования устройства Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ структуру LOGFONT.

'структура ΡˆΡ€ΠΈΡ„Ρ‚Π° win32 API

Public Type LOGFONT 'высота ΡˆΡ€ΠΈΡ„Ρ‚Π°

ifHeight As Long

'ΡˆΠΈΡ€ΠΈΠ½Π°

ifWidth As Long

'ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π°

ifEscapement As Long

ifOrientation As Long

'Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Π° ΡˆΡ€ΠΈΡ„Ρ‚Π°

ifWeight As Long

'настройки ΡˆΡ€ΠΈΡ„Ρ‚Π°

ifItalic As Byte

ifUnderline As Byte

ifStrikeOut As Byte

ifCharSet As Byte

ifOutPrecision As Byte

ifClipPrecision As Byte

ifQuality As Byte

IsngPitchAndFamily As Byte

'ΡˆΡ€ΠΈΡ„Ρ‚

ifFaseName (LF_FACECIZE — 1) As Byte

End Type

Π­Ρ‚Π° структура ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ описываСт, Ρ‚ΠΎ ΠΊΠ°ΠΊ тСкст Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Π½Π° ΡƒΡΡ‚ройствС. ПослС заполнСния структуры Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ API Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ CreateFontIndirect. Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ — ΡˆΡ€ΠΈΡ„Ρ‚.

БСйчас Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ созданный ΡˆΡ€ΠΈΡ„Ρ‚ ΠΊ ΡƒΡΡ‚ройству.

Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SelectObject. Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» установлСн Π½Π° ΡƒΡΡ‚ройствС Π΄ΠΎ ΡΡ‚ΠΎΠ³ΠΎ. Π­Ρ‚ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΅ΡΡ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ использовался устройством Π΄ΠΎ ΡΡ‚ΠΎΠ³ΠΎ. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΠΌ этот дСскриптор, для восстановлСния Π΅Π³ΠΎ послС рисования.

Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ тСкст.

РСализация ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° интСрфСйса прилоТСния

Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ тСкстовый надпись рисунок

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

ОбъявлСния API Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

'Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ константы для ΡˆΡ€ΠΈΡ„Ρ‚Π°

Public Const LF_FACECIZE = 32

Public Const LOGPIXELSY = 90

'Ρ‚ΠΈΠΏ Ρ‚ΠΎΡ‡ΠΊΠ°,

'стандартный Win32 API Ρ‚ΠΈΠΏ

Public Type pointapi x As Long y As Long

End Type

'структура ΡˆΡ€ΠΈΡ„Ρ‚Π° win32 API

Public Type LOGFONT

ifHeight As Long

ifWidth As Long

ifEscapement As Long

ifOrientation As Long

ifWeight As Long

ifItalic As Byte

ifUnderline As Byte

ifStrikeOut As Byte

ifCharSet As Byte

ifOutPrecision As Byte

ifClipPrecision As Byte

ifQuality As Byte

IsngPitchAndFamily As Byte

ifFaseName (LF_FACECIZE — 1) As Byte

End Type

'установка ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ устройства

'Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» установлСн Ρ€Π°Π½Π΅Π΅

Public Declare Function SelectObject Lib «gdi32» (ByVal hdc As Long, ByVal hObject As Long) As Long

'ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎ Ρ…Π΅Π½Π΄Π»Ρƒ

Public Declare Function DeleteObject Lib «gdi32» (ByVal hObject As Long) As Long

'созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΈΠ· ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° LOGFONT

Public Declare Function CreateFontIndirect Lib «gdi32» Alias «CreateFontIndirectA» (lpLogFont As LOGFONT) As Long

'Π²Ρ‹Π²ΠΎΠ΄ тСкста Π² ΡƒΡΡ‚ройство

Public Declare Function TextOut Lib «gdi32» Alias «TextOutA» (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long

'функция получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΡΡ‚ройству

Public Declare Function GetDeviceCaps Lib «gdi32» (ByVal hdc As Long, ByVal intIndex As Long) As Long

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ†Π΅Π½Ρ‚Ρ€Π° масс.

'ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ†Π΅Π½Ρ‚Ρ€Π° масс

Private Function getCM () As pointapi 'срСднСС арифмСтичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ элСмСнтов ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° Dim arr () As pointapi arr = dots Dim sX As Long, sY As Long Dim i As Integer 'ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ Π²ΡΠ΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° For i = 1 To UBound (arr) 'суммируСм ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ sX = sX + arr (i).x sY = sY + arr (i).y Next 'Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ getCM. x = sX / UBound (arr) getCM. y = sY / UBound (arr)

End Function

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° рисования

Sub paint_field () pic. Cls 'ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌ 'Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для Ρ‚ΠΎΡ‡Π΅ΠΊ Dim dot As pointapi, nextDot As pointapi 'врСмСнная строка Dim tmpS As String 'Π΄Π»ΠΈΠ½Π° сторон ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° Dim length As Single 'врСмСнная пСрСмСнная для Ρ‚ΠΎΡ‡ΠΊΠΈ Dim tmpDot As pointapi 'ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ Π²ΡΠ΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ For i = 1 To UBound (dots) 'Ρ†Π²Π΅Ρ‚ синий col = vbYellow 'Π±Π΅Ρ€Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ dot = dots (i) 'ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅ΠΌ Π½Π° ΠΏΠΎΠ»Π΅ Π·Π΅Π»Π΅Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ pic. Circle (dot.x, dot. y), 10, vbGreen j = i + 1 'ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° If j > UBound (dots) Then j = 1 'Ссли Π²Π΄Ρ€ΡƒΠ³ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° оказалась Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ _ Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ col = vbGreen End If nextDot = dots (j) 'опрСдСляСм ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ 'рисуСм линию ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ сторону ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½Π° pic. Line (nextDot.x, nextDot. y)-(dot.x, dot. y), col Next 'Ссли ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρ‚ΠΎ If UBound (dots) > 1 Then 'опрСдСляСм Ρ†Π΅Π½Ρ‚Ρ€ масс, записываСм Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ cm = getCM () 'рисуСм этот Ρ†Π΅Π½Ρ‚Ρ€ масс ΠΊΠ°ΠΊ ΠΊΡ€Π°ΡΠ½ΡƒΡŽ Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ pic. FillStyle = 0 pic. FillColor = vbRed pic. Circle (cm.x, cm. y), 4, vbRed pic. FillStyle = 1 'рассчитываСм линию Dim y2 As Single, x2 As Single y2 = (pic.ScaleWidth) * Sin (angle) x2 = pic. ScaleWidth * Cos (angle) pic. Line (cm.x, cm. y)-(cm.x + x2, cm. y + y2) pic. Line (cm.x, cm. y)-(cm.x — x2, cm. y — y2) 'Ρ‡ΠΈΡ‚Π°Π΅ΠΌ строку ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°Π΄ΠΎ вывСсти Dim s As String s = txtText. Text 'ΡˆΡ€ΠΈΡ„Ρ‚ Dim apiFont As LOGFONT 'Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ массив Dim bytBuf () As Byte 'пСрСмСнная ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Dim intI As Integer 'имя ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΈΠ· ΠΊΠΎΠΌΠΌΠΎΠ½Π΄ΠΈΠ°Π»ΠΎΠ³Π° Dim strFontName As String strFontName = pic.Font.Name 'ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ имя ΡˆΡ€ΠΈΡ„Ρ‚Π° Π² ΠΊΠΎΡˆΠ΅Ρ€Π½Ρ‹ΠΉ Π²ΠΈΠ΄ bytBuf = StrConv (strFontName & Chr$(0), vbFromUnicode) 'ΠΏΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²ΠΎ записываСм Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ API Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ For intI = 0 To UBound (bytBuf) apiFont. ifFaseName (intI) = bytBuf (intI) Next intI 'записываСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡˆΡ€ΠΈΡ„Ρ‚Π° apiFont. ifHeight=pic.Font.Size*GetDeviceCaps (pic.hdc, LOGPIXELSY) 72

apiFont.ifItalic=Switch (pic.Font.Italic=True, 1, pic.Font.Italic = False, 0 apiFont. ifUnderline = Switch (pic.Font.Underline = True, 1, pic.Font.Underline = False, 0)

apiFont.ifStrikeOut = Switch (pic.Font.Strikethrough = True, 1, pic.Font.Strikethrough = False, 0) apiFont. ifWeight = pic.Font.Weight 'опрСдСляСм ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ apiFont. ifEscapement = -(angle) * 1800 / pi apiFont. ifOrientation = apiFont. ifEscapement Dim fontObject As Long, oldFont As Long Dim ingRes As Long 'создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π° fontObject = CreateFontIndirect (apiFont) 'Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ созданный ΡˆΡ€ΠΈΡ„Ρ‚ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ устройства (пиктчСрбокс) _ ΠΏΡ€ΠΈ этом функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку, Π° ΡΡ‚Π°Ρ€Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚ oldFont = SelectObject (pic.hdc, fontObject) Dim oldColor As Long 'сохранСяСм старый Ρ†Π²Π΅Ρ‚ oldColor = pic. ForeColor 'устанавливаСм Π½ΠΎΠ²Ρ‹ΠΉ pic. ForeColor = picFontColor 'ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ Π²Ρ‹Π²ΠΎΠ΄ ingRes = TextOut (pic.hdc, cm. x, cm. y, s, Len (s)) 'восстанавливаСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ pic. ForeColor = oldColor fontObject = SelectObject (pic.hdc, oldFont) 'удаляСм созданный ΡˆΡ€ΠΈΡ„Ρ‚ DeleteObject fontObject End If pic. Refresh ' обновляСм ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ, Ρ‚.ΠΊ. AutoRedraw=true

End Sub

Π Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

Β· ΠΎΠ±Π·ΠΎΡ€ срСдств Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Β· обоснованиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Β· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ части

Β· рСализация

Β· ΠΏΠΎΠ΄Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΡ‚ΠΎΠ³Π° Наработки Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠΉ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ модуля Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ интСрфСйс Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

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