Я создаю редактор базового уровня для игры, основанной на плитках, поэтому я ищу хороший / оптимальный способ рисования группы плиток, которые соответствуют минимальному типичному разрешению экрана (~ 1080p); таким образом, который позволяет мне быстро перерисовывать вещи при необходимости (включая наложенную сетку).
Я пытался заставить его работать, используя элемент управления PictureBox, рисуя в событии OnPaint. Сначала я подумал, что это может быть хорошей идеей, пока не осознал, насколько медленным стало перерисовывание, когда я добавил простой алгоритм рисования сетки - для завершения перерисовок при высоких разрешениях потребовалось несколько секунд (хотя <1080p все же). </p>
Я не вижу, чтобы это решение масштабировалось очень хорошо, чтобы позволить мне создать редактор без задержек. У кого-нибудь есть какие-либо предложения относительно компонента или метода, позволяющего сделать этот вид полуинтенсивного графического рисования / перерисовки возможным?
Примечание. В идеале я хотел бы использовать элемент управления, который можно разместить на панели, благодаря чему автоматическая прокрутка панели работает для панорамирования вокруг элемента управления, если он слишком велик.
Код чертежа :
public void DrawLevel(Graphics graphics, Rectangle viewport)
{
SolidBrush b = new SolidBrush(Color.DarkGray);
graphics.FillRectangle(b, 0, 0, viewport.Width, viewport.Height);
}
public void DrawGrid(Graphics graphics, Rectangle viewport)
{
Pen p = new Pen(Color.Black, 1);
for (int x = 0; x < viewport.Width; x++)
{
for (int y = 0; y < viewport.Height; y++)
{
if (x == 0 || (x % 32) == 0)
graphics.DrawLine(p, x, 0, x, viewport.Height - 1);
if (y == 0 || (y % 32) == 0)
graphics.DrawLine(p, 0, y, viewport.Width - 1, y);
}
}
}