我对我的项目做了一些分析,并追踪了一个绘图功能,使用了80%的项目处理时间。由于它如此重要,我觉得我做的任何改进都会对我的表现产生很大的影响。这个功能大约需要25毫秒才能完成,大概是40 fps,我希望它能达到60帧。
private void pic2OnPaint(object sender, PaintEventArgs e)
{
try
{
Rectangle rect = Rect();
e.Graphics.DrawImage(LatestScreenshot, new Point(-rect.Location.X, -rect.Location.Y));
if (PaintLayers.Count > 0 | ChosenTool != Option.None) // So it does not attempt to draw a blank bitmap.
{
e.Graphics.DrawImage(PaintSurface, new Point(-rect.Location.X, -rect.Location.Y));
}
if (!Holding & !PanelDragHolding & !HandleDragHolding) // So it does not attempt to draw a blank bitmap.
{
e.Graphics.DrawImage(invisibleLayer, new Point(-rect.Location.X, -rect.Location.Y));
}
}
catch { }
}
我非常感谢任何提示。
每帧调用一次。 LatestScreenshot位图不会改变。 Paintsurface每帧都会改变。我把它放在try catch中只是因为我错误的唯一一次是我初始化项目所以LatestScreenshot在第一次被调用时为null。除了那个之外我没有任何错误。