Создайте собственный нарисованный элемент управления для .net compact framework - PullRequest
0 голосов
/ 12 июня 2010

Я только начал на .net compact framework. Я хочу нарисовать поле судоку на экране. Поэтому я записал PictureBox и определил метод для события Paint:

private void pictureBoxPlayfield_Paint(object sender, PaintEventArgs e)
{
    // use e.Graphics to draw the grid, numbers and cursor
}

Это работает, но вы можете видеть, как нарисована сетка. Итак, мой вопрос: как правильно / лучше создать такой пользовательский элемент управления? Есть ли способ включить двойную буферизацию?

1 Ответ

2 голосов
/ 12 июня 2010

В Compact Framework нет встроенной поддержки двойной буферизации. Вы можете добавить его самостоятельно, PictureBox уже поддерживает свойство Image. Создайте растровое изображение в конструкторе и присвойте его изображению. Вам больше не нужно событие Paint, оно предоставлено PictureBox и уже рисует его на экране.

Когда изображение нужно изменить, создайте объект Graphics с Graphics.FromImage (), передав изображение PB и нарисуйте ваши вещи. Вызовите метод PB Invalidate (), чтобы сообщить ему, что необходимо перерисовать изображение. Если вы все еще видите мерцание, переопределите метод OnPaintBackground () PB и ничего не делайте.

Единственное другое соображение касается обработки изменения размера, вам понадобится большее или меньшее растровое изображение. Не уверен, что это будет необходимо для игры.

...