首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WPF 使用 Composition API 做高性能渲染

在 WPF 中很多小伙伴都会遇到渲染性能的问题,虽然 WPF 的渲染可以甩浏览器渲染几条街,但是还是支持不了游戏级的渲染。...在 WPF 使用的 DX 只是优化等级为 9 和 DX 9 差不多的性能,微软在很多开发者的提议开放了现代渲染方法 Composition API 这是 UI 应用的里程碑的技术 现在这个技术只是最小可用版本...这和在 WPF 中使用其他渲染方法的窗口一样,这个技术也是在 WPF 中使用 WinForms 或 UWP 控件的技术 在 CompositionHost 的主要代码是 InitComposition...用到的黑科技 通过 HwndHost 方法拿到一个窗口的句柄 其实不是直接在 WPF 使用 Composition 而是在创建一个窗口使用 Composition 因为 WPF 的渲染和 Composition...因为使用了 HwndHost 用了两个渲染方法,在使用 UWP 渲染方法的范围会在窗口的最上也就是 WPF 无法在这个范围放任何的像素,同时也存在焦点等问题。

2.1K20

两行CSS让长列表性能渲染提升7倍!

这类似于给内容设置display: none。 auto:该元素打开布局包含、样式包含和绘制包含。如果该元素与用户不相关,它也会跳过其内容。...content-visibility: hidden手动管理可见性 上面说到content-visibility: hidden的效果与display: none类似,但其实两者还是有比较大的区别的:...虽然用户看不到,但浏览器却会实实在在的去渲染,以至于浪费大量的性能。所以我们得想办法让浏览器不渲染非可视区的内容就能够达到提高页面渲染性能的效果。...此时就可以直接使用 content-visibility: auto 它可以用来跳过屏幕外的内容渲染,对于这种有大量离屏内容的长列表,可以大大减少页面渲染时间。...这个时候我们可以使用contain-intrinsic-size来指定的元素自然大小,确保我们未渲染子元素的 div 仍然占据空间,同时也保留延迟渲染的好处。

36610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CSS魔法堂:display:none与visibility:hidden的恩怨情仇

    深入display:none  我们都清楚当元素设置display:none后,界面上将不会显示该元素,并且该元素不占布局空间,但我们仍然可以通过JavaScript操作该元素。...或多个盒子,然后浏览器以盒子模型的信息布局和渲染界面。...而设置为display:none的元素则在Render Tree中没有生成对应的盒子模型,因此后续的布局、渲染工作自然没它什么事了,至于DOM操作还是可以的。  ...无论是捕获、命中目标和冒泡阶段均不可以 由于display:none的元素根本不会在界面上渲染,就是连1个像素的都不占,因此自然无法通过鼠标点击命中,而元素也无法获取焦点,那么也不能成为键盘事件的命中目标...不过由于各浏览器实现效果均有出入,因此一般不会使用这个值。 4.inherit  继承父元素的visibility值。

    1.5K31

    元素隐藏与显示属性及操作方式

    元素的隐藏显示经常会使用,比如二级导航,响应式布局等等。...使用场景:让某元素在屏幕中不可见,如:鼠标:hover之后元素隐藏/显示 常用属性方法: visibility: hidden; 浏览器对其渲染可是不可见,它在网页中占位置却不可点击,也就是说明元素不可见却仍然占据空间.../* 元素隐藏 */ display:none; /* 元素显示 */ display:block; 隐藏元素本身,并且在网页中不占位置,在隐藏的方法中,取none值这种方法一般是不可取的!...因为display:none是直接不显示,也就是不渲染此元素,如果它所作用的元素排版在页面较前,先渲染,就容易引起回流(reflow)和重绘(repaint),造成难以预知的后果。...此时默认情况用户只能点击文字区域才能调整 */ /* 如果把a标签转换成块级元素,此时可以设置宽高,会让a标签范围更大,用户可以点击调整的区域也越大 */ display

    1.7K30

    使用CSS这个小技巧,可以让长列表网页的渲染性能提升几倍以上!

    只需要一行CSS代码,就可以实现可见网页只加载可见区域内容,使网页的渲染性能得到数倍的提升!...用户可以使用它跳过元素的呈现(包括布局和绘制),直到用户需要为止,让页面的初始渲染得到极大的提升。 value content-visibility属性有三个可选值: visible: 默认值。...类似于对其内容设置了display: none属性。...-- ... --> 渲染效果 从chrome可以看出,渲染时间花费了1454ms: 使用后 代码 在class...渲染效果 可以明显的看到,使用content-visibility: auto;后渲染时间只需要381ms,性能提升了近4倍!而且随着元素内容变复杂,提升的性能会有更明显的上升。

    74630

    vue中v-show和v-if的异同

    不同点: 实现本质方法不同 v-show本质就是通过设置css中的display设置为none,控制隐藏 v-if是动态的向DOM树内添加或者删除DOM元素 编译的区别 v-show其实就是在控制css...v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件 编译的条件 v-show都会编译,初始值为false,只是将display设为none,但它也编译了 v-if...初始值为false,就不会编译了 性能 v-show只编译一次,后面其实就是控制css,而v-if不停的销毁和创建,故v-show性能更好一点。...注意点:因为v-show实际是操作display:" "或者none,当css本身有display:none时,v-show无法让显示 总结:如果要频繁切换某节点时,使用v-show(无论true或者false...初始都会进行渲染,此后通过css来控制显示隐藏,因此切换开销比较小,初始开销较大),如果不需要频繁切换某节点时,使用v-if(因为懒加载,初始为false时,不会渲染,但是因为它是通过添加和删除dom元素来控制显示和隐藏的

    76010

    CSS魔法堂:Transition就这么好玩

    前言  以前说起前端动画必须使用JS,而CSS3为我们带来transition和@keyframes,让我们可以以更简单(声明式代替命令式)和更高效的方式实现UI状态间的补间动画。...display:none让transition失效的补救措施  虽然修改display有可能会引发reflow,但它依然不能启用Transition,这点真心要问问委员会了。...更让人疑惑的是,它不单不支持启用Transition,而且当设置display:none时其余CSS属性的Transition均失效。难到这是让元素脱离渲染树的后果??... .box{ display: none; background: red; height: 20px; } ...那么我们可以得到的补救措施就是——强制执行reflow,下面的操作均可强制执行reflow(注意:会影响性能哦!)

    55930

    十人九问,回流和重排怎么优化?

    发生机制: 页面初始渲染; 添加/删除元素; 位置、尺寸(包括边距大小、高度、宽度)、内容(文本、图片替换)变化; 浏览器窗口大小变化; display:none,脱离了文档流; 3.这两者之间有什么关系...措施 1.避免逐个修改节点样式,尽量一次性修改 2.将需要多次修改的DOM元素缓存 3.可以将需要多次修改的DOM元素设置 display:none,操作完再显示。...也可以先为元素设置display: none,操作结束后再把它显示出来。因为在display属性为none的元素上进行的DOM操作不会引发回流和重绘。...但是对于动画的其它属性,比如background-color这些,还是会引起回流重绘的,不过它还是可以提升这些动画的性能。...常见的触发硬件加速的css属性: transform opacity filters Will-change 如果你为太多元素使用css3硬件加速,会导致内存占用较大,会有性能问题。

    22710

    2022高频前端面试题——CSS篇

    参考回答: 结构:display:none: 会让元素完全从渲染树中消失,渲染的时候不占据任何空间, 不能点击, visibility: hidden:不会让元素从渲染树消失,渲染元素继续占据空间,只是内容不可见...,不能点击 opacity: 0: 不会让元素从渲染树消失,渲染元素继续占据空间,只是内容不可见,可以点击 继承:display: none和opacity: 0:是非继承属性,子孙节点消失由于元素从渲染树消失造成...性能:displaynone : 修改元素会造成文档回流,读屏器不会读取display: none元素内容,性能消耗较大 visibility:hidden: 修改元素只会造成本元素的重绘,性能消耗较少读屏器读取...参考回答: 任何改变用来构建渲染树的信息都会导致一次重排或重绘: 添加、删除、更新DOM节点 通过display: none隐藏一个DOM节点-触发重排和重绘 通过visibility: hidden隐藏一个...完全隐藏 (1) display 属性 display: none; (2) hidden 属性 HTML5 新增属性,相当于 display: none 视觉上的隐藏

    1.5K30

    使用CSS3实现60FPS的移动端动画(转)

    如果您按照我们的提示,您在移动应用程序中使用动画元素会很容易,在其中适当地使用动画元素也会很容易... 虽然每个人都在移动领域使用CSS3动画,但是很多人做的并不正确。开发人员经常无视最佳做法。...绿色区域表示渲染动画花费的时间。 该数据呈现不规则的帧率和缓慢的性能。 “绿色条表示FPS。高一点的表示动画呈现为60 FPS。低一点的表示低于60 FPS。...要真正让它运行顺利,我们将使用GPU渲染动画。...transform: translateX(-100%); transition: transform 300ms linear; will-change: transform; } 虽然一些浏览器仍然需要...这迫使浏览器重新生成我们的样式表,并且影响了渲染性能。 像黄油溶液一样流畅的60FPS 如果我们在视口区域外创建菜单怎么办?将菜单放在一个孤立的区域将确保我们只影响我们希望动画的元素。

    1.9K20

    图片的实时渲染和离屏渲染

    视频的渲染一般都是实时渲染,使用SurfaceView或者TextureView,图片的渲染一般都会采用ImageView,可以设置路径,也可以设置Bitmap,再加上Canvas和Paint,我无敌了...问:我想在一张图片上加上贴纸 答:简单,我使用Cavas,将贴纸放在特定的位置,然后生成一张新的Bitmap放入ImageView上。...问:频繁销毁除了产生内存问题,导致稳定性问题,会不会导致性能比较差? 答:内存抖动过分频繁,确实会导致性能问题。...从上面的聊天我们已经得知ImageView处理图片的的两个问题: 内存抖动问题 渲染效率低,性能差 ImageView渲染图片和离屏渲染怎么关联起来了?...离屏渲染发生在GPU层面上,会创建新的渲染缓冲区,会触发 OpenGL 的多通道渲染管线,图形上下文的切换会造成额外的开销,增加 GPU 工作量。其实从描述上来看,就知道离屏渲染是比较影响性能的。

    2K20

    面试官:CSS 面试题集锦

    字体图标和svg图标对比 svg 兼容现有图片能力前提得支持矢量 渲染方式不同 iconfont 采用字体渲染得方式,效果不是很好,SVG 采用图形渲染 iconfont 可读性不好 渐进增强,优雅降级是什么...使用display:none来隐藏所有内容 display:none可以让网页中所有内容不显示,如代码、文字、链接、图片、div层,是推荐的内容隐藏方式。...属性的全部值 display: none 表示不被显示 .first { display: none; width: 200px; } display: block 块级元素 a {...块级元素即使设置了宽度,仍然是独占一行。 block元素可以设置margin和padding属性。...改变绝对定位会使用到 CPU。 因此translate()更高效,可以缩短平滑动画的绘制时间。 如果实现一个高性能的CSS动画效果?

    3.6K30

    5个你可能不知道的CSS属性

    具体来说,这五个CSS属性可以分为以下三类: 书写显示(font-display和write-mode); 渲染性能的提升(contain和will-change属性); 创建新的花式设计(clip-path...这意味着我们的网页可以减小体积,(很可能)提高性能。 在使用font-display时,您可以使用以下五个值之一: auto:默认值。...: fallback; }h1 {  font-family: AmazingFont, Arial, sans-serif; } 这个功能在浏览器中的支持程度仍然很低,但情况会很快得以改善。...如果您想问当浏览器还未支持这个属性的时候,使用font-display将会发生什么?答案是这些浏览器会忽略该属性,字体渲染的行为将与以前一样。...contains允许几个值,每个值都可以让你限制浏览器需要做多少渲染工作。 我们详细分析一下每个值: none:默认值。使用此值不应用限制效果。 size:该值开启元素的大小限制。

    1.1K20

    5个你可能不知道的CSS属性

    具体来说,我们将介绍与CSS有关的CSS属性: *书写显示(font-display和write-mode); *渲染性能的提升(contains和will-change属性); *创建新的花式设计(clip-path...但是,由于“font-display”属性,情况变得不同。 font-display属性在@font-face声明时使用。...contains允许几个值,每个值都可以让你限制浏览器需要做多少渲染工作。 我们详细分析一下每个值: none:默认值。使用此值不应用限制效果。 size:该值开启元素的大小限制。...none: 没有剪贴 每个基本形状都有不同的参数。列出所有这些都是无聊的,所以我将向您介绍两个示例,向您展示使用此属性。 ? ?...您应该在更改发生之前和之后使用脚本代码切换will-change。 不应该用来预测和解决潜在的性能问题。在出现问题后,它必须被视为最后的手段。

    1K20
    领券