首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WPF 获取元素(Visual)相对于屏幕设备的缩放比例,可用于清晰显示图片

    如下图,我画了一个屏幕,屏幕里面有一个 WPF 窗口,WPF 窗口里面有一个或者多个 ViewBox 或者设置了 RenderTransform 这样的缩放的控件,一层层嵌套下有我们的最终控件。...分别计算所有的缩放 从上面的图中,我们可以得知,有两种不同种类的缩放: 屏幕到 WPF 窗口的缩放 WPF 窗口内部的缩放 屏幕到 WPF 窗口的缩放 我们知道 WPF 的单位叫做 DIP 设备无关单位...支持 Windows 10 最新 PerMonitorV2 特性的 WPF 多屏高 DPI 应用开发 WPF 窗口内部的缩放 WPF 窗口内部的缩放,肯定不会是一层层自己去叠加。...new ArgumentNullException(nameof(visual)); var root = visual; var parent = VisualTreeHelper.GetParent...Visual r) { root = r; } parent = VisualTreeHelper.GetParent

    1.5K40

    VisualTreeHelper

    Silverlight中只有可视化树,没有WPF中的逻辑树,这一点可从SL的sdk文档中得到印证: 可视化树概念也存在于 WPF 中,它与 Silverlight 的可视化树概念类似。...然而,一个显著的差异是 WPF 还提供一个附加的筛选器或对象树(称为"逻辑树")的概念。逻辑树概念与某些属性系统行为相关。Silverlight 不通过帮助器类来公开此逻辑树。...从上图可以看到,一个普通的Button控件,在可视化(对象)树里表现为:ButtomChrome,ContentPresenter,TextBlock的组合 另外Silverlight中提供了一个VisualTreeHelper...[{1}]的内容为:{2}",i,btn.Name,btn.Content));                             }             StackPanel sp = VisualTreeHelper.GetParent...0)             { for (var i = 0; i < count; i++)                 {                     var child = VisualTreeHelper.GetChild

    1K70

    在WPF中使用矢量图标的几种方法

    1、打开https://www.iconfont.cn/,搜索自己想要的图标 我这里搜索一个star,然后下载svg版本 2、用记事本打开如下 3、我们手动转换一下(将属性小写改为大写、d改为data、...这里提供两个方法, 一、使用ViewBox进行缩放,可以看到在SVG中也是使用了viewBox进行缩放的。 将ViewBox的宽高定义成实际需求的宽高即可,但是要注意的是,要保持图标的原始比例。........... 152.8 148.9z" Fill="LightPink"> Viewbox> 二、使用工具进行裁剪 以前微软是有个工具叫Microsoft Expression...定义一个字体样式 /Fonts/#Font Awesome 6 Free Solid 4、然后到官网搜索自己想要的图标...使用步骤 1、下载图标浏览器, 方便查找图标 https://github.com/MahApps/IconPacks.Browser/releases/tag/1.0.0 2、搜索自己想要的图标,如star

    84500

    WPF自学入门(一)WPF-XAML基本知识

    3、在WPF中,XAML运行在CLR之上,但它不编译为IL,而是编译为BAML代码,在运行时会被解析成CLR类型(Types)。 4、WPF中XAML是大小写敏感的。...二、基本语法 要学习wpf,我们需要采用webform的思维来考虑问题。...在WPF之中,XAML是很重要的一个元素,它是用来构造WPF的UI界面的,正是因为WPF有了XAML这标记语言,它才能实现把界面和逻辑分离开来的一种设计模式,逻辑程序员写后台代码,而前台的界面设计由设计人员用...开始WPF的Hello World基本语法解析。 新建WPF项目 项目默认文件结构,引用中导入了如下4个wpf开发必备的dll,这也是xaml中默认的命名空间。...遍历可视化树可以简单的使用VisualTreeHelper和简单的递归方法。WPF提供了两个辅助类(LogicalTreeHelper and VisualTreeHelper)来操作这两棵树。

    3.7K10

    WPF 通过 EXIF 设置和读取图片的旋转信息

    本文将告诉大家如何在 WPF 里面设置图片的 EXIF 信息,包括如何设置图片的旋转信息,以及如何读取 EXIF 的内容 值得一提的是在 WPF 里面,默认的图片渲染信息是无视 System.Photo.Orientation...信息的,一切都是推荐进行手动控制 在开始之前,咱先来用代码创建一张简单的图片 在 WPF 里面,使用代码进行绘图是一个非常高性能的方法,可以重复使用 DirectX 提供的高性能绘制能力,再加上 WPF...而且 WPF 的上层 API 是统一的,屏蔽掉很多细节,不需要更多额外的知识即可使用 先创建一个 DrawingVisual 对象,在这里面传入想要绘制的内容,接着使用 RenderTargetBitmap...需要在实际用到绘制的时候,才会调用 DirectX 进行绘制,例如调用 RenderTargetBitmap 的 Render 方法,将绘制的指令转换为绘制为内存的图片 var dpiScale = VisualTreeHelper.GetDpi...drawingContext.DrawLine(new Pen(Brushes.Black, 2), new Point(2, 5), new Point(90, 5)); } var dpiScale = VisualTreeHelper.GetDpi

    1.4K10

    WPF 已知问题 开启 IsManipulationEnabled 之后触摸长按 RepeatButton 不会触发连续的 Click 事件

    本文记录 WPF 的一个已知问题,在 RepeatButton 上开启 IsManipulationEnabled 漫游支持之后,将会导致触摸长按到 RepeatButton 之上时,不会收到源源不断的...Click 事件 这是有个伙伴在 WPF 官方仓库报告的问题,详细请看 https://github.com/dotnet/wpf/issues/8223 原始的问题是他发现放在 ListBox 里面的...GetChild(DependencyObject root, Func predicate) { var childrenCount = VisualTreeHelper.GetChildrenCount...root); for (var i = 0; i < childrenCount; i++) { var child = VisualTreeHelper.GetChild...IsManipulationEnabled 为 true 的容器内,运行代码,此时可以看到放入到 ListBox 的 RepeatButton 能够在触摸长按时不断收到 Click 事件 由于此问题是 WPF

    91110
    领券