tôi đang làm việc trên một trò chơi, nhưng hiện tại tôi đang chạy điểm chuẩn.Tốc độ vẽ hình ảnh
Nếu có ai có thể giúp tôi về vấn đề này, tôi sẽ đánh giá cao điều đó.
Những gì tôi đang làm, là tôi cháy sự kiện sơn trên một bảng điều khiển khi tôi nhấp vào nút bắt đầu, với mã này:
private void startToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
pnlArea.Invalidate();
}
catch (Exception)
{
throw;
}
}
sau đó tôi làm điều này trong trường hợp sơn của tôi:
private void pnlArea_Paint(object sender, PaintEventArgs e)
{
try
{
stopwatch = new Stopwatch();
// Begin timing
stopwatch.Start();
if (gameStatus == GameStatus.PlaceHead)
{
e.Graphics.DrawImage(dictHead["HeadRight"], 100, 100, 15, 15);
}
//e.Graphics.Clear(Color.White);
if (gameStatus == GameStatus.GameTest)
{
int x = 0;
int y = 0;
for (int i = 0; i < 5000; i++)
{
x += 15;
if (x > 1000)
{
x = 0;
y += 15;
}
e.Graphics.DrawImage(body.Value, x, y, 15, 15);
}
}
toolTimer.Text = Math.Round((stopwatch.Elapsed.TotalMilliseconds/1000), 2).ToString() + "s";
// Stop timing
stopwatch.Stop();
}
catch (Exception)
{
throw;
}
}
Đây là phần cơ thể tôi đang vẽ trong đoạn code trên:
Đây là kích thước chính xác -> 15px x 15px
nhưng điều này mất đến 1,2 giây đôi khi !!! có cách nào tôi có thể cải thiện điều này không?
đây là một mẫu của màn hình kết quả cuối cùng:
'DoubleBuffered = true;' trong trình tạo biểu mẫu (ngay bên dưới 'InitializeComponent()'). cái đó có giúp ích không? – Sjips
Yeah đã thử nó ... nhưng tôi đã làm nó trong các thuộc tính của biểu mẫu ... đặt Double Buffer thành true. –
WinForms không phải là một môi trường tuyệt vời để chơi game. Điều đó đang được nói, vẽ mỗi hình ảnh 15 x 15 pixel là khá tốn kém. Hãy thử chỉ cần vẽ hình vuông của bạn với một thói quen vẽ thay thế. Nếu hội đồng quản trị không có quá nhiều pháo hoa diễn ra mọi lúc, hãy thử chỉ vẽ vào một bitmap và chỉ vẽ bitmap vào màn hình. Định dạng PixelFormat.Format32bppPArgb là nhanh nhất. Nếu một ô không thay đổi, đừng bận tâm cập nhật nó. – LarsTech