论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
8K分辨率下,使用WPF播放视频造成UI卡顿的问题 ...
8K分辨率下,使用WPF播放视频造成UI卡顿的问题
南七星之家
金牌会员
|
2022-9-1 11:07:34
|
显示全部楼层
|
阅读模式
楼主
主题
996
|
帖子
996
|
积分
2990
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
我们知道,WPF有两大特性:1、使用DirectX渲染;2、分辨率无关性:WPF使用与设备分辨率无关的单位来度量计算显示界面的像素点,相同大小的情况下,分辨率越高,像素点就会越多。因此在WPF中,使用矢量图(会根据WPF进行缩放,清晰度不变)比位图(固定像素点,缩放会出现锯齿,并且占用空间大)更合适。
在WPF问世之前,传统的Windows应用程序都依靠如下两部分来创建用户界面:
User32:该部分为许多元素(如窗口、按钮和文本框等)提供了熟悉的Windows外观。
GDI/GDI+:该部分为渲染简单形状、文本以及图像提供了绘图支持,但增加了复杂程度(而且通常性能较差)。
后针对User32和GDI/GDI+的限制发行了 DirectX 技术,起初用于开发游戏,注重速度,由显卡支持,可以实现复杂的纹理映射、特殊效果(如半透明)以及三位图形所需的硬件加速功能。
WPF应用程序在底层都是使用DirectX,因此具有两大优势:①可使用丰富的效果;②显卡硬件加速。
但是WPF默认是使用硬件加速的,所以如果在8K屏下,显卡的性能不如意,会出现WPF应用卡顿的问题:
1、例如在WPF应用在8K屏播放视频,不管是使用MediaElement(实际上是对MediaPlayer的封装,因为增加了重业务,所以相对于MediaPlayer,性能方面会差一些)还是MediaPlayer的方式,都会出现卡顿的效果。
1)该问题尝试对视频的格式进行处理(包括帧率,码率,视频编码,关闭GPU加速等),仍然没办法解决卡顿的问题。
2)通过对启动的exe->右键属性->兼容性->更改高的DPI设置->勾选替代高DPI缩放行为->选择应用程序(该造成的作用在于:避免应用程序在使用不同显示分辨率的监视器之间移动造成的影响),仍然没办法解决卡顿的问题。
2、如果显卡偶现异常情况,可能会造成视频的画面为黑色,音频仍然可以播放的情况。
针对上面的情况,目前找到比较好的办法是:禁用硬件加速
在app.xaml.cs的OnStartup中添加
RenderOptions.ProcessRenderMode = System.Windows.Interop.RenderMode.SoftwareOnly;
禁用硬件加速后,MediaElement在Stop后不再卡顿,但是视频在播放的时候,仍然会存在卡顿的情况。
把AllowsTransparency设置为False,能起到一点卡顿优化的作用
如果设计到窗体圆角功能,AllowsTransparency设置为False之后圆角会出现一个黑色的尖角,可以使用WindowChrome去除,在Window窗体下添加
<WindowChrome.WindowChrome>
<WindowChrome GlassFrameThickness="8"
UseAeroCaptionButtons="False"
NonClientFrameEdges="None"
CornerRadius="8"
ResizeBorderThickness="0">
</WindowChrome>
</WindowChrome.WindowChrome>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
南七星之家
金牌会员
这个人很懒什么都没写!
楼主热帖
MySQL并行复制(MTS)原理(完整版) ...
详讲Java开发中的六个常用API(Math,S ...
【K8S】K8S入门基础知识
软件项目管理 3.5.敏捷生存期模型 ...
云原生之 Docker篇 Docker Stack介绍及 ...
java中Collections.addAll方法具有什么 ...
BOS EDI 项目 Excel 方案开源介绍 ...
鸿蒙到底是不是安卓?
python中的字典和集合
postman结合newman生成测试报告 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
数据安全
网络安全
备份
Java
快速回复
返回顶部
返回列表