我的问题可能对您来说很愚蠢,但我意识到移动应用程序窗体会使其中的代码运行速度变慢。例如,当我加载一个位图图像并对其应用一些图像编辑算法时,整个过程大约需要22秒才能完成。但是如果我在执行过程中移动表单,它会额外增加3-4秒的运行时间。我能用秒表发现延迟的情况。那么,如果可能的话,我该如何绕过这种行为呢?
发布于 2015-02-18 21:16:02
这只是一个假设,需要您进行调查,因为您没有发布任何代码,因此不可能真正知道发生了什么。
最有可能的是,您将图像的边界移到了屏幕之外。当您再次移动时,窗口引擎将对要重新绘制的矩形执行一些绘制调用。放大时调整大小也会发生同样的情况,但缩小窗口时则不会。
如果是这种情况,那么只要你不覆盖/不覆盖图像的区域,你就不会遇到任何额外的绘制调用。
所以这不是一个答案,但在您的位置上,我会覆盖Paint()方法,并记录进行了多少额外的调用。基于此,我会寻找一种解决方案,比如像这样抑制这些调用:
public override void Paint()
{
if (algorithmRunning)
{
return; // suppress any further computations
}
base.Paint(); // do actual redraws
}这段代码只是一个例子,你必须根据MSDN文档来修复它。
您不应该做的是只挂接到OnPaint()事件中,因为这样您仍然可以调用实际的Paint()方法。
https://stackoverflow.com/questions/28584408
复制相似问题