我在GUI上遇到了问题。
我的GUI有多个部分。
第一个部分是一个图像(从500 x 500到3000 x 3000,每秒最多更新4次)
第二个部分是主菜单
第三个部分有关于图像的选项按钮。我不会一次显示所有选项,我通过滚动多个菜单并仅渲染可见的菜单。(例如选项之一是图像的像素大小)
我在Viewbox中显示图像,该盒子大小为800x800像素。我使用
Stretch="{Binding Path=StretchMode}"将图像拉伸到盒子内部。
我收到的图像是某种流式传输。我每秒收到多个图像。
现在,当我显示一个图像时,第一个GUI部分很好地工作(无论图像大小如何),但其他部分有时会出现严重的帧率下降。以下是一些示例:
示例1:
图像大小为500x500像素。我可以不掉帧地工作,并且整个GUI正确更新。
示例2:
图像大小为1500x1500像素。我可以不掉帧地工作,并且整个GUI正确更新。
示例3:
图像大小为2500x2500像素。图像更新快,但GUI的其余部分将从60 fps掉帧到fps,甚至有时到1 fps。
对于这个问题,我的想法是:
硬件达到了极限。但是通过任务管理器和Visual Studios的CPU / RAM分析看起来没问题。
GUI的渲染量太大,因为3000x3000很大,每秒4次也不慢。通过测试加载(我从hdd驱动器中加载它们)的3000x3000图像(相同数据类型),它可以快速且没有问题。
一次更改了太多GUI。我尝试了只有5个更新的软件。仍然有同样的问题。
Microsoft Prism事件没有出现。这也不是因为它位于控制器内部,并在更改时引发更改。 (我有一个写日志文件的记录器,它比GUI实际更改的次数更高)
使用不同的数据类型。可能会有变化,但我尝试了几种。(BitmapSource,BitmapImage和WriteableBitmap)
将某些渲染选项外包给另一个线程。仍然没有改变。
我希望您能给我一些想法,为什么GUI会有这种行为。
如果您需要代码,请告诉我。
我没有使用虚拟机。
这个问题出现在Windows 7 64位和Windows 8.1 64位上(未在Windows 10上测试过)。
我的硬件不同。这个问题出现在我的笔记本电脑(Intel i7-4702MQ @2.2 Ghz,8 gb ddr ram,intel board graphics)和工作电脑上,规格各异(最高的是:Intel Xeon with 3.5 Ghz,128 GB DDR4 Ram和Titan X以及4k显示器)。