KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework

Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Иво Салмре, "Программирование мобильных устройств на платформе .NET Compact Framework" бесплатно, без регистрации.
Перейти на страницу:

#End If

End Sub


Private Sub buttonShowEventLog_Click(ByVal sender As _

 System.Object, ByVal e As System.EventArgs) _

 Handles buttonShowEventLog.Click

#If EVENTINSTRUMENTATION <> 0 Then

 instrumentation_ShowEventLog()

#End If

End Sub

Листинг 11.5. Вызов метода Update() элемента управления для отображения пояснительного текста, информирующего о ходе выполнения задачи

'--------------------------------------------------------------------

'Этот код принадлежит форме, содержащей по одному элементу управления

'Button (button1) и Label (label1)

'--------------------------------------------------------------------

Private Sub Button1_Click(ByVal sender As System.Object, _

 ByVal e As System.EventArgs) Handles Button1.Click

 'Отобразить курсор ожидания

 System.Windows.Forms.Cursor.Current = _

  System.Windows.Forms.Cursors.WaitCursor

 Dim testString As String

 Dim loop3 As Integer

 For loop3 = 1 To 100 Step 10

  Label1.Text = loop3.ToString() + "% Done..."

  '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  'Чтобы отобразить информацию о процессе обновления,!

  'удалите символы комментария в строке ниже         !

  '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  'Label1.Update()

  testString = ""

  Dim loop2 As Integer

  For loop2 = 1 To 1000

   testString = testString + "тест"

  Next

 Next

 Label1.Text = "Готово!"


 'Удалить курсор ожидания

 System.Windows.Forms.Cursor.Current = _

  System.Windows Forms.Cursors.Default

End Sub

Листинг 11.6. Создание изображения на внеэкранной растровой поверхности и передача его в элемент управления PictureBox

'--------------------------------------------------------------------

'Создать рисунок на растровой поверхности. Переслать его в PictureBox

'--------------------------------------------------------------------

Private Sub Button1_Click(ByVal sender As System.Object, _

 ByVal e As System.EventArgs) Handles Button1.Click


 'Создать новую битовую карту

 Dim myBitmap As System.Drawing.Bitmap

 myBitmap = New System.Drawing.Bitmap(PictureBox1.Width, _

  PictureBox1.Height)


 '--------------------------------------------------------------------------

 'Создать объект Graphics, чтобы иметь возможность рисовать на битовой карте

 '--------------------------------------------------------------------------

 Dim myGfx As System.Drawing.Graphics

 myGfx = System.Drawing.Graphics.FromImage(myBitmap)


 'Закрасить нашу битовую карту желтым цветом

 myGfx.Clear(System.Drawing.Color.Yellow)


 'Создать перо

 Dim myPen As System.Drawing.Pen

 rayPen = New System.Drawing.Pen(System.Drawing.Color.Blue)


 '-----------------

 'Нарисовать эллипс

 '-----------------

 myGfx.DrawEllipse(myPen, 0, 0, myBitmap.Width - 1, _

  myBitmap.Height - 1)

 'Создать сплошную кисть

 Dim myBrush As System.Drawing.Brush


 '-----------------------

 'Нарисовать текст кистью

 '-----------------------

 myBrush = New System.Drawing.SolidBrush( _

  System.Drawing.Color.Black)

 'Примечание: мы используем объект Font из формы

 myGfx.DrawString("Привет!", Me.Font, myBrush, 2, 10)


 '------------------------------

 'Важно! Очистить все после себя

 '------------------------------

 myGfx.Dispose()

 myPen.Dispose()

 myBrush.Dispose()


 '-------------------------------------------------------------------

 'Указать объекту pictureBox, на необходимость отображения растрового

 'изображения, которое мы только что создали и нарисовали.

 '-------------------------------------------------------------------

 PictureBox1.Image = myBitmap

End Sub

Листинг 11.7. Создание объекта Graphics для формы

'----------------------------------------------------------

'Создает объект Graphics для формы и осуществляет рисование

'----------------------------------------------------------

Private Sub Button1_Click(ByVal sender As System.Object, _

 ByVal e As System.EventArgs) Handles Button1.Click

 'Создать объект Graphics для формы

 Dim myGfx As System.Drawing.Graphics

 myGfx = Me.CreateGraphics()


 'Создать кисть

 Dim myBrush As System.Drawing.Brush

 myBrush = New System.Drawing.SolidBrush( _

  System.Drawing.Color.DarkGreen)

 'Заполнить прямоугольник

 myGfx.FillRectangle(myBrush, 4, 2, 60, 20)


 '-------------------------

 'Важно: Выполнить очистку!

 '-------------------------

 myBrush.Dispose()

 myGfx.Dispose()

End Sub

Листинг 11.8. Подключение к функции Paint формы

'Кисти, которые мы хотим кэшировать, чтобы избавить себя от необходимости

'все время создавать их и уничтожать

Private m_brushBlue As System.Drawing.Brush

Private m_brushYellow As System.Drawing.Brush


'Ради интереса подсчитаем, сколько раз осуществлялся вызов

Private m_paintCount As Integer


'-----------------------------------------------------------------------------

'Мы перекрываем обработчики событий Paint наших базовых классов. Это означает,

'что каждый раз, когда форма вызывается для перерисовки самой себя, будет

'вызываться эта функция.

'-----------------------------------------------------------------------------

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)

 'ВАЖНО: Вызвать базовый класс и дать ему возможность

 'выполнить всю необходимую работу по рисованию

 MyBase.OnPaint(e)


 'Увеличить на 1 значение счетчика вызовов

 m_paintCount = m_paintCount + 1


 '--------------------------------------------------------------------------

 'Важно:

 'Вместо того чтобы создавать объект Graphics, мы получаем его

 'на время данного вызова. Это означает, что освобождать память путем вызова

 'метода .Dispose() объекта - не наша забота

 '--------------------------------------------------------------------------

 Dim myGfx As System.Drawing.Graphics

 myGfx = e.Graphics


 '-------------------------------------------------------------------

 'Поскольку эту операцию рисования необходимо выполнить быстро,

 'кэшируем кисти, чтобы избавить себя от необходимости создавать их и

 'уничтожать при каждом вызове

 '-------------------------------------------------------------------

 If (m_brushBlue Is Nothing) Then

  m_brushBlue = New System.Drawing.SolidBrush( _

   System.Drawing.Color.Blue)

 End If

 If (m_brushYellow Is Nothing) Then

  m_brushYellow = New System.Drawing.SolidBrush( _

   System.Drawing.Color.Yellow)

 End If


 '-------------------

 'Выполнить рисование

 '-------------------

 myGfx.FillRectangle(m_brushBlue, 2, 2, 100, 100)

 myGfx.DrawString("PaintCount: " + CStr(m_paintCount), _

  Me.Font, m_brushYellow, 3, 3)


 'Выход: Объекты, для которых мы должны были бы вызывать метод

 '.Dispose(), отсутствуют.

End Sub

Листинг 11.9. Простой пользовательский элемент управления, который изменяет цвета и запускает событие, определяемое пользователем

'Простейший пользовательский элемент управления

Public Class myButton

Inherits System.Windows.Forms.Control

'--------------------------------------

'Объекты, необходимые нам для рисования

'--------------------------------------

Private m_RectangleBrush As System.Drawing.Brush

Private m_TextBrush As System.Drawing.Brush

Private m_RectangleColor As System.Drawing.Color


'------------------------------------------------------------------------

'Событие, которое мы хотим предоставить на обработку. Это - общедоступный

'делегат.

'------------------------------------------------------------------------

Public Event EventButtonTurningBlue(ByVal sender As Object, _

 ByVal e As System.EventArgs)


 'Конструктор

 Public Sub New()

  MyBase.New()


  'ПРИМЕЧАНИЕ: Мы должны написать функцию "Dispose()" и

  'деструктор, который освобождает память от этих объектов

  'Создать необходимые кисти

  m_RectangleColor = System.Drawing.Color.Black

  m_RectangleBrush = New System.Drawing.SolidBrush( _

   m_RectangleColor)

  m_TextBrush = New System.Drawing.SolidBrush( _

   System.Drawing.Color.White)

End Sub


'-----------------------------------------------

'Внутренним откликом на щелчок является

'повторение трех различных цветов кнопки в цикле

'-----------------------------------------------

Protected Overrides Sub OnClick(ByVal e As System.EventArgs)


 '--------------------------------------------------------

 'Важно: Вызвать базовую реализацию. Это

 'обеспечит возможность вызова любого обработчика событий,

 'подключенного к данному элементу управления

 '--------------------------------------------------------

 MyBase.OnClick (e)


 '------------------------------------------------------

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*