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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ КПК ΠΈ смартфонов Π½Π° .NET Compact FrameworkΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 14

Автор АлСксандр Климов

Рис. 5.3. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ клавиш Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ

Π’Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ устройства

На ΠΊΠ°Ρ€ΠΌΠ°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠ° Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ устройства. На самом Π΄Π΅Π»Π΅ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° эту ΠΊΠ½ΠΎΠΏΠΊΡƒ устройство Π½Π΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ, Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² особый спящий Ρ€Π΅ΠΆΠΈΠΌ. Π’ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ хранятся Π² памяти, ΠΈ Ссли устройство Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, Ρ‚ΠΎ всС прилоТСния ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ просто ΠΏΡ€ΠΎΠΏΠ°Π΄ΡƒΡ‚. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ пСрСвСсти устройство Π² спящий Ρ€Π΅ΠΆΠΈΠΌ, имитируя Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ этой ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ API keybd_event, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² листингС 5.4.

Листинг 5.4

/// <summary>

/// Ѐункция ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ наТатия клавиш Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅

/// </summary>

/// <param name="bVk">Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ клавиши для ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ

/// наТатия ΠΈ отпускания клавиши</param>

/// <param name="bScan">Π—Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ - установлСно Π²

// 0</param>

/// <param name="dwFlags">Π€Π»Π°Π³</param>

/// <param name="dwExtraInfo">Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация</param>

[DllImport("coredll.dll", CharSet = CharSet.Unicode)]

public static extern void

keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);


// константа для ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ устройства

public const int VK_OEM_8 = 0xDF;


private void butOff_Click(object sender, EventArgs e) {

 // Π˜ΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ устройства

 keybd_event(VK_OEM_8, 0, 0, 0);

}

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ Π΅Ρ‰Π΅ большС, Ρ‚ΠΎ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π±Π»ΠΎΠ³ АлСкса Π―Ρ…Π½ΠΈΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ адрСсу blog.opennetcf.org/ayakhnin. Π’Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΡΡ‚Π°Ρ‚ΡŒΡŽ Β«Keyboard hook in the CF v2Β». Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассказываСтся ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π΅ всСх сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π»ΡŽΠ±Ρ‹Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ устройства. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° ΡΡ‚Π°Ρ‚ΡŒΡ Β«Custom SIP Control for CFΒ». Автор ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ элСмСнта InputControl, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит свою Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ создании прилоТСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стандартная панСль Π²Π²ΠΎΠ΄Π° SIP, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π“Π»Π°Π²Π° 6

Π“Ρ€Π°Ρ„ΠΈΠΊΠ°

ΠšΠ»Π°ΡΡΡ‹ для программирования Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π² .NET Compact Framework опираСтся Π½Π° Ρ‚Π΅ ΠΆΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ для ΠΏΠΎΠ»Π½ΠΎΠΉ вСрсии .NET Framework. ВсС основныС классы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ сосрСдоточСны Π² пространствС ΠΈΠΌΠ΅Π½ System.Drawing. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих классов ΠΌΠΎΠΆΠ½ΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ всСвозмоТныС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π»ΠΈΠ½ΠΈΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с изобраТСниями ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкстом. Π’ качСствС своСобразного холста для графичСских ΠΎΠΏΡ‹Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ элСмСнтов управлСния. Π‘Π°ΠΌΡ‹ΠΌ Π³Π»Π°Π²Π½Ρ‹ΠΌ классом являСтся класс Graphics, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Π²Ρ‹Π²ΠΎΠ΄Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Π’Π°ΠΊΠΆΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ Ρ‚Π°ΠΊΠΈΠ΅ классы, ΠΊΠ°ΠΊ Pen, Brush, Color, Rectangle, Line, Image.

Класс Pen

Класс Pen ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΏΠ΅Ρ€Π°, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ проводятся прямыС ΠΈ ΠΊΡ€ΠΈΠ²Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠΎΠ»Π½ΠΎΠΉ вСрсии .NET Framework, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… вСрсии конструктора Pen, .NET Compact Framework позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΡƒΡ… конструкторов. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Pen(Color) создаСтся ΠΏΠ΅Ρ€ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Pen(Color, Single) позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚Π° ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρ‹. Но Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² .NET Compact Framework 2.0.

Π’ листингС 6.1 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания ΠΏΠ΅Ρ€ΡŒΠ΅Π² синСго ΠΈ красного Ρ†Π²Π΅Ρ‚ΠΎΠ². Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠ΅Ρ€ΡŒΠ΅Π² ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ.

Листинг 6.1

private void Form1_Paint(object sender, PaintEventArgs e) {

 Graphics g = e.Graphics;

 // Π‘ΠΈΠ½Π΅Π΅ ΠΏΠ΅Ρ€ΠΎ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½ΠΎΠΉ 1 пиксСл

 Pen bluePen = new Pen(Color.Blue);

 // ΠšΡ€Π°ΡΠ½ΠΎΠ΅ ΠΏΠ΅Ρ€ΠΎ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½ΠΎΠΉ 5 пиксСлов

 Pen redFatPen = new Pen(Color.Red, 5);

 g.DrawLine(bluePen, 10, 10, 230, 10);

 g.DrawLine(redFatPen, 10, 20, 230, 20);

}

Класс Brush

Класс Brush являСтся абстрактным классом для создания кистСй, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΈ тСкст Π½Π° графичСской повСрхности. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° .NET Compact Framework ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ классы SolidBrush ΠΈ TextureBrush. К соТалСнию, класс LinearGradientBrush, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ красивыС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, Π² настоящСС врСмя Π½Π΅ поддСрТиваСтся.

Класс SolidBrush

ΠŸΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° SolidBrush Π½ΡƒΠΆΠ½ΠΎ просто ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для отобраТСния Ρ„ΠΈΠ³ΡƒΡ€. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ кисти, достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ Π² свойствС Color. Π’ листингС 6.2 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π·Π΅Π»Π΅Π½Ρ‹ΠΉ ΠΊΡ€ΡƒΠ³ ΠΈ ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ.

Листинг 6.2

private void Form1_Paint(object sender, PaintEventArgs e) {

 Graphics g = e.Graphics;

 // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΈΡΡ‚ΡŒ Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°

 SolidBrush myBrush = new SolidBrush(Color.Green);

 // РисуСм Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΡ€ΡƒΠ³

 g.FillEllipse(myBrush, 10, 30, 30, 30);

 // МСняСм Ρ†Π²Π΅Ρ‚ кисти Π½Π° ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ

 myBrush.Color = Color.Yellow;

 // РисуСм Π·Π°ΠΊΡ€Π°ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ

 g.FillRectangle(myBrush, 50, 30, 50, 25);

}

Класс TextureBrush

Класс TextureBrush позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡΡ‚ΡƒΡ€Π½ΡƒΡŽ ΠΊΠΈΡΡ‚ΡŒ. Подобная тСкстурная ΠΊΠΈΡΡ‚ΡŒ позволяСт Π½Π΅ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ, Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ тСкстурноС Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… графичСских ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ². ИспользованиС ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ кисти позволяСт Π΄ΠΎΠ±ΠΈΠ²Π°Ρ‚ΡŒΡΡ красивых эффСктов. Π’ листингС 6.3 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования тСкстурной кисти с использованиСм изобраТСния, входящСго Π² состав Windows Mobile 2003.

Листинг 6.3

private void Form1_Paint(object sender, PaintEventArgs e) {

 Graphics g = e.Graphics;


 // Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ рисунок

 Image myImage = new Bitmap(@"\Windows\alerts.bmp");

 // создаСм Ρ‚Π΅ΠΊΡΡ‚ΡƒΡ€Π½ΡƒΡŽ ΠΊΠΈΡΡ‚ΡŒ TextureBrush

 texture = new TextureBrush(myImage);

 // РисуСм эллипс, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ рисунком

 g.FillEllipse(texture, 10, 60, 120, 120);

 g.Dispose();

}

Π’ΠΠ˜ΠœΠΠΠ˜Π•

Π’Π°ΠΊΠΈΠ΅ свойства класса TextureBrush, ΠΊΠ°ΠΊ Transform ΠΈ WrapMode, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² .NET Compact Framework 2.0.

Класс Color

ΠŸΡ€ΠΈ создании ΠΏΠ΅Ρ€ΡŒΠ΅Π² ΠΈΠ»ΠΈ кистСй примСнялся класс Color. Он позволяСт Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚ Π»ΠΈΠ±ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ названия, Π»ΠΈΠ±ΠΎ указывая составныС части Ρ†Π²Π΅Ρ‚Π° Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ RGB. НапримСр, для создания красного Ρ†Π²Π΅Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² листингС 6.4.

Листинг 6.4

// красный Ρ†Π²Π΅Ρ‚ ΠΏΠΎ названию

Color redColor = Color.Red;

// красный Ρ†Π²Π΅Ρ‚ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² RGB

Color redColor2 = Color.FromArgb(255, 0, 0);

// Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° экран Π΄Π²Π΅ красныС Π»ΠΈΠ½ΠΈΠΈ

g.DrawLine(new Pen(redColor), 10, 190, 100, 190);

g.DrawLine(new Pen(redColor2), 10, 195, 100, 195);

Класс Font

Класс Font ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π²ΠΎΠ΄Π° тСкста. Как Π½ΠΈ странно, Π²Ρ‹Π²ΠΎΠ΄ тСкстовой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Ρ‚ΠΎΠΆΠ΅ являСтся графичСской ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ смущаСт Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ². Из Ρ‡Π΅Ρ‚Ρ‹Ρ€Π½Π°Π΄Ρ†Π°Ρ‚ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… вСрсий конструктора класса Π² .NET Compact Framework доступно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€ΠΈ. Для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Font Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ сСмСйство ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², Ρ€Π°Π·ΠΌΠ΅Ρ€ символов ΠΈ ΡΡ‚ΠΈΠ»ΡŒ начСртания. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² листингС 6.5.

Листинг 6.5

Font myFont = new Font("Tahoma", 9, FontStyle.Italic);

g.DrawString("ΠšΠ°Ρ€ΠΌΠ°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€", myFont, myBrush, 14, 200);

Класс Icon

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Icon ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ DrawIcon для отобраТСния ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΈΠΊΡ‚ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ…Ρ€Π°Π½ΡΡ‰ΡƒΡŽΡΡ Π² рСсурсах ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС понадобится ΠΊΠΎΠ΄, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² листингС 6.6.

Листинг 6.6

Icon myIcon = new Icon(Assembly.GetExecutingAssembly().

 GetManifestResourceStream("MyApp.Icon.ico"));

Класс Bitmap

Класс Bitmap ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с растровыми изобраТСниями. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Bitmap ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° Stream, ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Bitmap ΠΈΠ»ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ пустой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Bitmap, ΡƒΠΊΠ°Π·Π°Π² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ. Π Π°Π½Π΅Π΅ класс Bitmap ΡƒΠΆΠ΅ использовался ΠΏΡ€ΠΈ создании тСкстурной кисти. Но ΠΏΡ€ΠΈ этом примСнялся родствСнный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Image. Π’ листингС 6.7 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ создания кисти.

Листинг 6.7

// Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ рисунок

Bitmap myImage = new Bitmap(@"\Windows\alerts.bmp");

// создаСм Ρ‚Π΅ΠΊΡΡ‚ΡƒΡ€Π½ΡƒΡŽ ΠΊΠΈΡΡ‚ΡŒ

TextureBrush texture = new TextureBrush(myImage);

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Point

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Point содСрТит ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ X ΠΈ Y для указания располоТСния Π½Π΅ΠΊΠΎΠ΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ. Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ .NET Compact Framework поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ конструктор для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Point, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ эти ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Point часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… DrawPolygon ΠΈ FillPolygon, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ·ΠΆΠ΅.