Аналог AutoRedraw (VB6) в VB.Net

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

макс2
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 14.10.2004 (Чт) 21:16
Откуда: Москва

Аналог AutoRedraw (VB6) в VB.Net

Сообщение макс2 » 14.10.2004 (Чт) 21:30

Помогите!
У меня проблема, создаю Paint для КПК. Создовая в 6 vb я делал с помощью AutoRedraw'а примерные линии(кругита, квадраты) как бы предпросмотор фигуры в динамическом режме, я использовал свойства AutoRedraw и Refrash PicBox'а. Но таких сволйст не нашел в VB.net, который сносно создает приложения для КПК!

кто знает помогите!!!! :D :?: :?: :!: :wink:

mad_Max
Бывалый
Бывалый
 
Сообщения: 203
Зарегистрирован: 15.09.2002 (Вс) 21:17
Откуда: Russia, Cherepovets

Сообщение mad_Max » 14.10.2004 (Чт) 22:34

Такой фичи, как AutoRedraw в VB.Net нет, тем более для Compact Framework... И как всегда, приходится делать ручками. Во всех статьях по программированию под PocketPC для работы с графикой рекомендуют создавать буфер и рисовать в нем, а потом содержимое буфера переносить на форму, picturebox, но я предпочитаю делать свой контрол, если не нужен полноэкранный режим 240x320. Буфером выступает Bitmap:
Код: Выделить всё
Dim bmpOff as new Bitmap(240,320)

Рисуем в нем с помощью graphics:
Код: Выделить всё
Dim gx_off as Graphics = Graphics.FromImage(bmpOff)

После проведения всех действий делаем gx_off.Dispose и переносим содержимое буфера куда надо. Например, в форму:
Код: Выделить всё
Me.CreateGraphics.DrawImage(bmpOff,0, 0)

А теперь собственно, эффект AutoRedraw. Пример для формы:
Код: Выделить всё
    Protected Overrides Sub OnPaintBackground(ByVal e As PaintEventArgs)
        'тут ничего не надо
    End Sub
    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
        e.Graphics.DrawImage(bmpOff,0,0)
    End Sub

Теперь, чтобы нарисовать фигуру для "предпросмотра", рисуй ее прямо на форме (Me.CreateGraphics.Draw...), чтобы стереть ее - делай Me.Refresh или Me.Invalidate; чтобы внести фигуру в рисунок - заноси в битмаповский буфер и снова обновляй форму. Если форму перекроет какое-нибудь окно, картинка из буфера перенесется автоматически - ведь сделан Override для OnPaint, что удобно. Таким образом, получаем почти тот же эффект, что и от AutoRedraw.
Вот как-то так :)

макс2
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 14.10.2004 (Чт) 21:16
Откуда: Москва

Сообщение макс2 » 18.10.2004 (Пн) 18:58

Не напишеш пару ссылок на такие статьи?

mad_Max
Бывалый
Бывалый
 
Сообщения: 203
Зарегистрирован: 15.09.2002 (Вс) 21:17
Откуда: Russia, Cherepovets

Сообщение mad_Max » 18.10.2004 (Пн) 21:04

Сейчас трудно вспомнить, что и где я читал на эту тему, но все-таки рекомендую посмотреть в MSDN статьи, выдаваемые на запрос "Compact Framework". Конкретно такой темы как "реализация AutoRedraw в .NET" там не найти, но полезного хватает.
в частности:
Список статей
Создание игрушек для КПК на базе графики .NET
Создание кнопки с картинкой (в стандартном наборе такой нет; в этой статье я почерпнул большую чась вышеописанного метода)
Естественно, все на английском, и не всегда на VB (чаще C#).
Дабы проиллюстрировать принцип работы, соорудил небольшой пример.
Вложения
SampleGX.zip
Прмер работы с графикой в .NET
(15.71 Кб) Скачиваний: 95


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 84

    TopList