gpt4 book ai didi

c# - 在 C# 中绘图的代码效率?

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:12 24 4
gpt4 key购买 nike

只是为了了解最佳实践或代码效率,我有这段代码:

请注意:我使用的是 .Net Compact Framework。

protected override void OnPaint(PaintEventArgs e)
{
if (BmpScreen == null)
{
BmpScreen = new Bitmap(ClientRectangle.Width, ClientRectangle.Height);
}

using (Graphics gBmpScreen = Graphics.FromImage(BmpScreen))
{
// some drawing using gBmpScreen
}
// finally
e.Graphics.DrawImage(BmpScreen, 0, 0);
}

Paint 方法的这段代码中,我每次都创建一个 Graphics 对象,

我的问题是这样做更好还是一开始只创建一次图形对象更好?

最佳答案

我不确定性能差异,但我建议在 OnResize 中分配和处理后台缓冲区位图和图形对象。我发现对于大多数自定义控件,您可以将更新后台缓冲区的实际工作尽可能靠近发生数据更改的位置分开,并简化 OnPaint 以仅将后台缓冲区位图 blit 到系统的图形。这适用于我编写的自定义图形控件,因为数据不会响应用户交互而改变。它包含在手势滚动控件中,大大改进了滚动动画。但是您可以通过调用 Update() 来响应用户交互更改以在您的处理程序范围内强制 OnPaint 来扩展该模式以处理更多交互控件。

关于c# - 在 C# 中绘图的代码效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11778516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com