我正在爲基於圖塊的遊戲創建一個基本級別的編輯器,所以我正在尋找一個很好的/最佳的方式來繪製一組等於最低(〜1080p)屏幕分辨率的圖塊。通過這種方式,我可以在必要時快速重繪內容(包括重疊網格)。用於在Windows窗體中重繪/繪製大圖形內容的好控制是什麼?
我一直試圖通過在OnPaint事件中繪製使用PictureBox控件來工作。起初,我認爲這可能是一個好主意,直到我意識到當我添加一個簡單的網格繪圖算法後,重繪速度變慢了 - 它需要幾秒鐘才能以高分辨率完成重繪(儘管如此,仍然可以使用< 1080p)。
我看不出這個解決方案的伸縮性能夠讓我創建一個無延遲的編輯器。有沒有人有任何建議,使這種半激烈的圖形繪製/重繪可能的組件或方法?
注意:理想情況下,我想使用可以放置在面板中的控件,使面板的自動滾動功能適用於在控件周圍平移,如果它太大。
繪圖代碼:
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);
}
}
}
「需要幾秒鐘才能完成高分辨率重繪」 - 似乎太慢了。懷疑你的算法....發佈你的代碼 – 2012-03-18 02:04:29
繪製代碼編輯 - 我已經知道繪製網格可以通過增加x和y的速度32,而不是使用模,但我不認爲它可以_that_不同於這個比例。 – mina 2012-03-18 02:27:49