VisualStudio 调试时会不断刷新 WPF 应用渲染
在 VisualStudio 附加调试和没有用 VisualStudio 附加调试时,对应用程序是有不同的影响,如 VisualStudio 设计器将会在附加调试 WPF 应用的时候,不断刷新 WPF 应用的渲染。也就是说,如果你觉得界面视觉效果不对或者对,也许可以甩锅到 VisualStudio 上
在上一篇博客告诉大家,在 WPF 中更改 DrawingVisual 的 RenderOpen 用到的对象的内容将持续影响渲染效果,详细请看 WPF 更改 DrawingVisual 的 RenderOpen 用到的对象的内容将持续影响渲染效果
通过以下简单的逻辑可以实现一个矩形动画的功能
private async void SetTranslateTransform(TranslateTransform translateTransform)
{
while (true)
{
translateTransform.X++;
if (translateTransform.X > 700)
{
translateTransform.X = 0;
}
await Task.Delay(TimeSpan.FromMilliseconds(10));
}
}
在 VisualStudio 附加调试下的视觉效果如下图,可以播放动画

然而有趣的是,在 VisualStudio 不附加调试的时候,可以发现界面不动了,如下图。下图非静止图片哦

如果在不附加调试时,有界面刷新时,那么依然还会动画。如上图,在鼠标在按钮上时,此时按钮界面需要刷新,于是触发了渲染。在触发渲染时,在收集的时候,重新拿到了 TranslateTransform 的值,矩形的渲染坐标更改
通过上面的例子可以看到,在附加 VisualStudio 调试时,界面将不断触发渲染,有时的动画效果就是在附加 VisualStudio 调试时看起来才是对的,或者看起来不对。因此在编写效果,需要在干掉 VisualStudio 调试看一下效果
本文所有代码放在 github 和 gitee 欢迎小伙伴访问
可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码
git init
git remote add origin https://gitee.com/lindexi/lindexi_gd.git
git pull origin 2af349867a6e6da136e5bc068357877f38788216
以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为 github 的源
git remote remove origin
git remote add origin https://github.com/lindexi/lindexi_gd.git
获取代码之后,进入 KebelrafoRalneanarjeargi 文件夹
VisualStudio 调试时会不断刷新 WPF 应用渲染的更多相关文章
- 通过分析 WPF 的渲染脏区优化渲染性能
原文:通过分析 WPF 的渲染脏区优化渲染性能 本文介绍通过发现渲染脏区来提高渲染性能. 本文内容 脏区 Dirty Region WPF 性能套件 脏区监视 优化脏区重绘 脏区 Dirty Regi ...
- Blazor项目在VisualStudio调试时配置运行基础目录
最近在使用 Blazor 开发管理后台时遇到了如下的问题,我这里后台整体采用了 AntDesignBlazor 组件库,在上线之后发现ReuseTabs组件在使用过程中,如果默认 / 没有指定为项目的 ...
- WPF文字渲染相关的问题及解决
wpf中常常遇到各种和文字渲染有关的问题. 如今列举下现象和解决方式. (1) 现象: 文字大小不一.不在同一水平线. 不同字渲染成同一个字, 或者字体发虚 原因:微软雅黑字体对中文字符的渲染支 ...
- 用 UI 多线程处理 WPF 大量渲染的解决方案
众所周知, WPF 的 UI 渲染是单线程的,所以如果我们异步或者新建线程去进行数据处理的时候,处理完,想要更新 UI 的时候,需要调用一下 Dispatcher.Invoke,将处理完的数据推入到 ...
- 在VisualStudio调试器中使用内存窗口和查看内存分布
调试模式下内存窗口的使用 在调试期间,"内存"窗口显示应用使用的内存空间.调试器窗口(如"监视"."自动"."局部变量" ...
- VisualStudio 调试不提示调试错误
尝试办法: 1.工具->选项->调试->启用异常助手;2.调试->异常; 解决办法: 把2.调试->异常; 下地全部钩上异常就弹出来了
- VisualStudio 调试Linux
微软自从换了CEO之后,拥抱开源的步伐真实越来越快了,这部,现在VS可以跟踪Linux程序了 http://blogs.msdn.com/b/vcblog/archive/2015/11/18/ann ...
- WPF 使用 Composition API 做高性能渲染
在 WPF 中很多小伙伴都会遇到渲染性能的问题,虽然 WPF 的渲染可以甩浏览器渲染几条街,但是还是支持不了游戏级的渲染.在 WPF 使用的 DX 只是优化等级为 9 和 DX 9 差不多的性能,微软 ...
- dotnet 读 WPF 源代码笔记 渲染收集是如何触发
在 WPF 里面,渲染可以从架构上划分为两层.上层是 WPF 框架的 OnRender 之类的函数,作用是收集应用程序渲染的命令.上层将收集到的应用程序绘制渲染的命令传给下层,下层是 WPF 的 GF ...
- WPF性能调试系列 – 内存监测
WPF性能调试系列文章: WPF页面渲染优化:Application Timeline WPF页面业务加载优化:Ants Performance Profiler WPF内存优化:Ants M ...
随机推荐
- KingbaseES V8R6集群运维系列 -- 修改ssh通信为 sys_securecmdd 通信
一.适用于: 本文档使用于KingbaseES V008R006版本. 二.关于SYS_SECURECMDD: sys_securecmdd是KingbaseES集群自带的工具,集群监控.管理集群时通 ...
- Scala 元祖Tuple
1 package chapter07 2 3 object Test10_Tuple { 4 def main(args: Array[String]): Unit = { 5 // 1. 创建元组 ...
- mybatis使用Hashmap传递参数
mapper 1 <!--传递map的key --> 2 <insert id="addUser2" parameterType="map"& ...
- HTTP内容协商机制和断点续传
- Mybatis-Plus框架的BaseMapper的insert方法和自定义mapper里面的insert方法会用哪个
在Mybatis-Plus框架中,当一个接口继承了BaseMapper接口,并且绑定了一个xml文件时,如果这个接口和xml文件中都定义了相同的方法,那么在调用该方法时,会优先调用xml文件中的方法, ...
- #线段树#洛谷 4269 [USACO18FEB]Snow Boots G
题目传送门 分析 模型转换一下,能通过当且仅当最长的无法通过段小于 \(d\),(这点应该是此题的精华吧) 那么按照最大深度从小到大排序,双指针在线段树上删除无法通过段,求最长区间即可 代码 #inc ...
- #扩展欧拉定理#CF906D Power Tower
题目 给定一个数列,有\(m\)组询问 定义 \[\large f(x-1)={a_x}^{f(x)} \] 若 \(f(r)=a_r\) 求 \(f(l)\) 对固定的 \(mod\) 取模 分析 ...
- #博弈论#Poj 2484 A Funny Game
题目 \(n\)个石子排成一圈,每次可以取一个或相邻的一对, 取完为胜,问先手是否必胜 分析 无论先手如何取,后手都能模仿先手的取法. 比如说,当石子个数为奇数时先手取相邻的一对,后手可以将对面的那一 ...
- #排列组合#C 模拟比赛
分析 由于每个选手的得分独立,考虑按照选手的最高得分降序排序 如果当前枚举到选手\(i\),首先记录\(o_i\)表示在选手\(i\)之前最小得分不低于选手\(i\)的最高得分 (必选,等于必选当且仅 ...
- go~istio加载wasm的步骤
参考 https://github.com/higress-group/proxy-wasm-go-sdk/tree/main/proxywasm https://github.com/tetrate ...