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

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

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

End Class

Листинг 13.4. Код формы для создания пользовательского элемента управления TextBox

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

'Переменная для хранения нашего нового элемента управления TextBox

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

Private m_filteredTextBox As SocialSecurityTextBox

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

'ОБРАБОТЧИК СОБЫТИЙ: Создать экземпляр нашего пользовательского элемента

' управления и поместить его в форму

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

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

 ByVal e As System.EventArgs) Handles Button1.Click

 'Создать, позиционировать и разместить элемент управления

 m_filteredTextBox = New SocialSecurityTextBox

 m_filteredTextBox.Bounds = _

  New System.Drawing.Rectangle(2, 2, 160, 20)


 'Подключить обработчик событий

 AddHandler m_filteredTextBox.TextChanged, _

  AddressOf Me.textBox_TextChanged


 'Задать родительский объект

 m_filteredTextBox.Parent = Me

 'Выделить элемент управления

 m_filteredTextBox.Focus()


 'Сделать данную кнопку недоступной, чтобы поверх данного объекта

 'не был создан второй объект

 SocialSecurityTextBox Button1.Enabled = False

End Sub


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

'ОБРАБОТЧИК СОБЫТИЙ: Этот обработчик подключается динамически при

' создании элемента управления

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

Private Sub textBox_TextChanged(ByVal sender As Object, _

 ByVal e As System.EventArgs)

 If (m_filteredTextBox.IsFullValidInput = True) Then

  label1.Text = "FULL SOCIAL SECURITY NUMBER!!!"

 Else

  Label1.Text = "Not full input yet..."

 End If

End Sub

Листинг 13.5. код формы, демонстрирующий использование прозрачности '         

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

'Размеры наших битовых образов и экранного изображения PictureBox

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

Const bitmap_dx As Integer = 200

Const bitmap_dy As Integer = 100

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

'Создает и прорисовывает изображение заднего плана

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

Private m_backgroundBitmap As System.Drawing.Bitmap

Sub CreateBackground()

 If (m_backgroundBitmap Is Nothing) Then

  m_backgroundBitmap = New Bitmap(bitmap_dx, bitmap_dy)

 End If

 'Делаем битовую карту белой

 Dim gfx As System.Drawing.Graphics

 gfx = System.Drawing.Graphics.FromImage(m_backgrourdBitmap)

 gfx.Clear(System.Drawing.Color.White)


 'Рисуем текст черным

 Dim myBrush As System.Drawing.Brush

 myBrush = New System.Drawing.SolidBrush( _

  System.Drawing.Color.Black)

 Dim у As Integer

 For у = 0 To bitmap_dy Step 15

  gfx.DrawString("I am the BACKGROUND IMAGE...hello", Me.Font, myBrush, 0, y)

 Next


 'Очистить

 myBrush.Dispose()

 gfx.Dispose()

End Sub


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

'Создает и прорисовывает изображение заднего плана

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

Private m_foregroundBitmap As System.Drawing.Bitmap

Sub CreateForeground()

 If (m_foregroundBitmap Is Nothing) Then

  m_foregroundBitmap = New Bitmap(bitmap_dx, bitmap_dy)

 End If

 'Делаем всю битовую карту синей

 Dim gfx As System.Drawing.Graphics

 gfx = System.Drawing.Graphics.FromImage(m_foregroundBitmap)

 gfx.Clear(System.Drawing.Color.Blue)


 'Рисуем несколько фигур желтым

 Dim yellowBrush As System.Drawing.Brush

 yellowBrush = New System.Drawing.SolidBrush( _

  System.Drawing.Color.Yellow)

 gfx.FillEllipse(yellowBrush, 130, 4, 40, 70)

 gfx.FillRectangle(yellowBrush, 5, 20, 110, 30)

 gfx.FillEllipse(yellowBrush, 60, 75, 130, 20)


 'Очистить

 yellowBrush.Dispose()

 gfx.Dispose()

End Sub


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

'Устанавливает размеры и местоположение PictureBox с левой стороны

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

Private Sub SetPictureBoxDimensions()

 PictureBox1.Width = bitmap_dx

 PictureBox1.Height = bitmap_dy

 PictureBox1.Left = 20

End Sub


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

'ОБРАБОТЧИК СОБЫТИЙ: Отобразить изображение ЗАДНЕГО ПЛАНА в PictureBox

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

Private Sub buttonDrawBackground_Click(ByVal sender As Object, _

 ByVal e As System.EventArgs) Handles buttonDrawBackground.Click

 SetPictureBoxDimensions()

 CreateBackground()

 PictureBox1.Image = m_backgroundBitmap

End Sub


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

'ОБРАБОТЧИК СОБЫТИЙ: Отобразить изображение ПЕРЕДНЕГО ПЛАНА в PictureBox

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

Private Sub buttonDrawForeground_Click(ByVal sender As Object, _

 ByVal e As System.EventArgs) Handles buttonDrawForeground.Click

 SetPictureBoxDimensions()

 CreateForeground()

 PictureBox1.Image = m_foregroundBitmap

End Sub


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

'ОБРАБОТЧИК СОБЫТИЙ: Наложить изображение ПЕРЕДНЕГО ПЛАНА на изображение

' ЗАДНЕГО ПЛАНА. Использовать МАСКУ ПРОЗРАЧНОСТИ, чтобы желтый

' цвет в изображении ПЕРЕДНЕГО ПЛАНА стал прозрачным и через

' него можно было видеть содержимое изображения

' ЗАДНЕГО ПЛАНА

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

Private Sub buttonDrawBackgroundPlusForeground_Click(ByVal _

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

 Handles buttonDrawBackgroundPlusForeground.Click

 SetPictureBoxDimensions()

 CreateForeground()

 CreateBackground()

 'Получить объект Graphics изображения ЗАДНЕГО ПЛАНА, поскольку

 'именно поверх него мы собираемся рисовать.

 Dim gfx As System.Drawing.Graphics

 gfx = System.Drawing.Graphics.FromImage(m_backgroundBitmap)


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

 'Создать класс ImageAttributes. Этот класс позволяет нам

 'задать прозрачный цвет на наших операций рисования

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

 Dim trasparencyInfo As System.Drawing.Imaging.ImageAttributes

 trasparencyInfo = New System.Drawing.Imaging.ImageAttributes

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

 'Задать прозрачный цвет

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

 trasparencyInfo.SetColorKey(System.Drawing.Color.Yellow, _

  System.Drawing.Color.Yellow)

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

 Dim rect As System.Drawing.Rectangle = _

  New System.Drawing.Rectangle(0, 0, _

  m_backgroundBitmap.Width, m_backgroundBitmap.Height)


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

 'Нарисовать изображение ПЕРЕДНЕГО ПЛАНА поверх изображения ЗАДНЕГО ПЛАНА

 'и использовать прозрачный цвет в ImageAttributes для создания окна

 'прозрачности, через которое виден задний план

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

 gfx.DrawImage(m_foregroundBitmap, rect, 0, 0, _

  m_foregroundBitmap.Width, m_foregroundBitmap.Height, _

  System.Drawing.GraphicsUnit.Pixel, trasparencyInfo)


 'Очистить

 gfx.Dispose()


 'Показать результат в виде растрового изображения

 PictureBox1.Image = m_backgroundBitmap

End Sub

Листинг 13.6. Код формы, демонстрирующий загрузку встроенных ресурсов

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

'Загрузить изображение и отобразить его в объекте PictureBox

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

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

 ByVal e As System.EventArgs) Handles Button1.Click

 LoadImageFromResource()

 PictureBox1.Image = m_myBitmapImage

End Sub


Private m_myBitmapImage As System.Drawing.Bitmap

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

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

'в нашей сборке

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

Public Sub LoadImageFromResource()

 'Если изображение уже загружено,

 'то не имеет смысла делать это повторно.

 If Not (m_myBitmapImage Is Nothing) Then

  Return

 End If


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

 'Получить ссылку на двоичную сборку нашего приложения

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

 Dim thisAssembly As System.Reflection.Assembly = _

  System.Reflection.Assembly.GetExecutingAssembly()


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

 'Получить имя сборки

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

 Dim thisAssemblyName As System.Reflection.AssemblyName = _

  thisAssembly.GetName()

 Dim assemblyName As String = thisAssemblyName.Name

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

 'Извлечь поток изображения из нашей сборки и создать соответствующую ему

 'битовую карту в памяти

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