Такой фичи, как 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.
Вот как-то так