WPF 性能优化建议

本章讲述:WPF 性能优化建议

20180930 WPF性能优化问题:运行软件发现CPU使用率很大(80%-95%),程序中含有委托,线程,定时器的处理,之前优化时,主要优化线程和定时器相关线程方面的处理,但是效果甚微;

无意间看到博客中说程序界面中使用了投影效果会造成CPU使用率高,就试着修改,没想到,软件运行稳定后CPU使用率下降到了30%左右。

现整理一下WPF性能优化建议:

1、尽量不使用DropShadowEffect投影效果,消耗资源很大;

2、在自定义控件,尽量不要在控件的ResourceDictionary定义资源,而应该放在Window或者Application级。因为放在控件中会使每个实例都保留一份资源的拷贝;

3、尽量多使用Canvas等简单的布局元素,少使用Grid或者StackPanel等复杂的,减小开销;

4、少用Margin Padding尤其避免嵌套使用;

5、尽量使用Static Resources不用DynamicResource;

6、计时尽量使用DispatcherTimer替代Timer;

7、自定义控件尽量从轻量级的控件继承;

8、需要绑定的属性设置为DependencyProperty的依赖项属性效率要高很多,不要自己写继承自INotifyPropertyChanged的属性:http://www.codeproject.com/Articles/62158/DependencyProperties-or-INotifyPropertyChanged

9、文字少的时候用TextBlock或者label,长的时候用FlowDocument;

10、绑定的字符串用Textblock;不用label;

11、如果正在绘制的内容需要频繁地重新绘制,考虑设置各Uelement对象的CacheMode="BitmapCache";

12、避免使用 Run 来设置文本属性:(MSDN)

   <TextBlock>
      <Run FontWeight="Bold">Hello, world</Run>
    </TextBlock>
    <TextBlock FontWeight="Bold">
      Hello, world
    </TextBlock>

13、尽量不要过分依赖使用值转换器;尽量少使用第三方类库;尽量不要设置控件Opacity属性,而用Visibility

14、加快WPF程序的启动速度:

    (1).减少需要显示的元素数量,去除不需要或者冗余的XAML元素代码.

    (2).使用UI虚拟化,只显示当前需要显示的元素.

    (3).不要把不要显示的自定义控件隐藏在主界面中,虽然它们不会显示出来,但是程序启动时还是会去计算自定义控件所需的空间和位置.

15、 耗时操作放在放在非UI线程上处理,保持UI的顺畅。处理完成后如果需要在UI上展示,调用Dispatcher.BeginInoke()方法。更多内容参考WPF QuickStart系列之线程模型(Thread Model);

16、关于Data Binding,根据实际情况对Binding指定不同的Mode,性能OneWay优于TwoWay。另外修正掉系统中Binding错误,可以在Visual Studio的输出日志中查找System.Windows.Data Error;

17、Resources: 系统资源,通常情况下我们会把样式资源都统一到App.xaml中,这是很好的,便于资源的管理。不过尽量把多次重复用到的资源放到App.xaml中。例如某些页面的资源只会在当前页面中使用到,那么可以把资源定义在当前页面; 如非必要,不要使用DynaicResource,使用StaticResource即可;

18、对Item类型控件重写时,使用VirtualizingStackPanel作为ItemPanel,这样列表资源可以只渲染当前需要的内容。不过如果设置CanContextScrol="True"会阻止虚拟化,另外使用VirtualizingStackPanel时,可以设置VirtualizingStackPanel.VirtualizationMode="Recycling", 这样已经显示过的列表不会被重复创建和释放掉。

19、尽量少的使用Animation,尤其在程序启动时,Animation渲染时会占用一些CPU资源。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF(Windows Presentation Foundation)是一款能够提供度可定制化和可扩展性的图形用户界面框架。在WPF中,也包含了一些性能绘图库,可以用来创建各种各样的图形和动画效果。 WPF性能绘图库具有以下几个特点: 1. 硬件加速:WPF性能绘图库可以利用图形硬件进行加速,从而提供更快的渲染和绘图速度。这使得在处理大量图形或复杂图形时能够得到更好的性能表现。 2. 矢量图形支持:WPF性能绘图库可以处理矢量图形,这意味着可以创建和显示不失真的图形,无论是在小尺寸还是分辨率显示器上都能保持清晰和细腻的图像品质。 3. 动画效果:WPF性能绘图库还可以用于创建各种各样的动画效果,包括平移、缩放、旋转、渐变等等。这使得可以在应用程序中添加更多的交互性和视觉吸引力,提升用户体验。 4. 可定制性和扩展性:WPF性能绘图库提供了丰富的API和功能,可以满足各种绘图需求。同时,由于内置了可定制和扩展的功能,开发人员可以轻松地对绘图库进行定制和扩展,以适应不同的项目需求。 总之,WPF性能绘图库为开发人员提供了一种强大的工具,能够在应用程序中实现性能的绘图和动画效果。无论是处理大量数据的数据可视化应用,还是创建各种各样的图形效果和动画,WPF性能绘图库都能够提供出色的表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值