首页
学习
活动
专区
圈层
工具
发布

将 UWP 的有效像素(Effective Pixels)引入 WPF

在本文中,对于尺寸,我们只说三个概念: 物理尺寸(单位:厘米) 显示器像素个数(单位:个) 有效像素(即 WPF 中最常用的那个单位;在本文结束之前,这应该是一个未定义的概念) 如果我们说 A 按钮比...当我们说按钮的有效像素宽度为 200 时,指的是你在 WPF 的 XAML 或 C# 代码中写下了 Width="200"。...吐槽 DIP WPF 曾经说自己用的是“设备无关单位”(DIP),愿景是在所有显示器上显示的物理尺寸相同。比如你在代码中写了 Width="96" 的按钮,那么在所有显示器上其尺寸为 1 英寸。...其实简单测试就不难发现这是一个根本无法自圆其说的愿景,具体无法自圆其说的点有两个。 WPF 说自己的开发无需考虑 DPI 缩放,因为它会自己做缩放。...那么当你写下 Width="96" 时,到底缩放还是不缩放呢?缩放就迁就了 DPI 缩放的特性,违背了物理尺寸相同的特性;不缩放就迁就了物理尺寸相同的特性,丢失了 DPI 缩放的特性。

1.6K21

Windows 下的高 DPI 应用开发(UWP WPF Windows Forms Win32)

方法是:打开“设置” -> “系统” -> “显示器” -> “高级缩放设置”,在“高级缩放设置”上,打开“允许 Windows 尝试修复应用,使其不模糊”。...DPI 缩放;但是 WPF 中嵌入的其他 UI 框架不支持自动 DPI 缩放。...前一次是为了让窗口在创建时有一个对此线程的新的 DPI 感知级别,而后一次调用是恢复此线程的 DPI 感知级别。...Microsoft PowerPoint 的演示页面使用的是屏幕 DPI 感知级别: ▲ 96 DPI 下的演示页面 ▲ 144 DPI 下的演示页面 可以看到,演示页面在多屏 DPI 下是没有产生缩放的模糊...并且更早的,V2 带来的非客户区缩放和子窗口 DPI 变更消息的 API 在 1507 和 1511(分别是 Windows 10 的第一和第二个正式版本)就已经有了,不过是未公开的(可参阅 【原创】实现每显示器高

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

    【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性

    XAML实时调试工具: XAML C# Edit & Continue 现在被称为 XAML Hot Reload (v16.2): 现在将 WPF / UWP 的 XAML C# Edit & Continue...请注意,工具栏移动到的位置不会在会话之间存储,并且在您的应用重新启动时会返回到默认位置。 ?...WPF Designer 现在完全适用于 WPF .NET Core 项目(v16.3) XAML 设计器的缩放/位置现在默认为全部适合(v16.4): 根据客户的反馈,我们重新评估了打开 XAML 窗口...以前的经验丰富的用户在 Visual Studio 会话中存储了每个文件的缩放级别和位置,这在客户经过一段时间后返回文件时引起混乱。...从此版本开始,我们将仅在活动会话的持续时间内存储缩放级别和位置,并在 Visual Studio 重新启动后恢复为“完全适合”默认值。

    9.3K30

    WPF 稳定的全屏化窗口方法

    本文的方法是基于 Win32 的,由 lsj 提供的方法,当前已在 500 多万台设备上稳定运行超过半年时间,只有很少的电脑才偶尔出现任务栏不消失的情况 本文的方法核心方式是通过 Hook 的方式获取当前窗口的...Win32 消息,在消息里面获取显示器信息,根据获取显示器信息来设置窗口的尺寸和左上角的值。...可以支持在全屏,多屏的设备上稳定设置全屏。...属性与 Win32 位置一致,防止有逗比全屏后改 WPF 的属性,发生一些诡异的行为 //下面这样做其实不太好,会再次触发 WM_WINDOWPOSCHANGING...WPF 属性与 Win32 位置一致,防止有逗比全屏后改 WPF 的属性,发生一些诡异的行为 //下面这样做其实不太好,会再次触发

    5.3K20

    准确判断一个 WPF 控件 UI 元素当前是否显示在屏幕内

    判断 UI 元素的位置,其右侧是否在屏幕最左侧,其底部是否在屏幕最上面;或者其左侧是否在屏幕最右侧,其顶部是否在屏幕最下面。...如果用户有多台显示器,而且大小还不一样,那么依前面的判定方法,下图中 C 控件虽然人眼看在屏幕外,但计算所得是在屏幕内。 更复杂的,是多台显示器还不同 DPI 时,等效屏幕尺寸的计算更加复杂。...因为 WPF 的坐标单位是“设备无关单位”(我更倾向于叫有效像素,见 有效像素(Effective Pixels)),所以在系统对窗口有缩放行为的时候,多屏不同 DPI 的计算相当复杂,所以这里我们使用纯...10 最新 PerMonitorV2 特性的 WPF 多屏高 DPI 应用开发 - walterlv Windows 系统上使用任务管理器查看进程的各项属性(命令行、DPI、管理员权限等) - walterlv...✔️ 多屏有不同 DPI(WPF 感知系统 DPI) ❌ ❌ ✔️ 多屏有不同 DPI(WPF 感知屏幕 DPI) ❌ ❌ ✔️ 多屏有不同 DPI(WPF 感知屏幕 DPI V2) ❌ ❌ ✔️ 纯

    1.1K40

    Mac 苹果电脑外接显示器手动开启 HiDPI 最正确方法

    2K显示器开启HiDPI的原因。...macOS 的 DPI 机制和 Windows 下不一样,比如 1080p 的屏幕在 Windows 下有 125%、150% 这样的缩放选项,而同样的屏幕在 macOS 下,缩放选项里只是单纯的调节分辨率...恢复(关闭 HiDPI) 命令恢复 如果还能进系统,就再次运行命令选择选项 3 关闭 HIDPI。 恢复模式 如果使用此脚本后,开机无法进入系统,请到 macos 恢复模式,打开终端。...快捷恢复 ls /Volumes/ ⬆️你会看到你的系统盘。 cd /Volumes/你的系统盘/Users/ ls ⬆️你可以看到所有用户的根(Home)目录。...手动恢复 使用终端删除 Library/Displays/Contents/Resources/Overrides 下删除所有通过外部注入的显示器配置文件夹。

    45K20

    不可不知的WPF几何图形(Geometry)

    在软件行业,经常会听到一句话“文不如表,表不如图”说明了图形在软件应用中的重要性。同样在WPF开发中,为了程序美观或者业务需要,经常会用到各种个样的图形。...今天以一些简单的小例子,简述WPF开发中几何图形(Geometry)相关内容,仅供学习分享使用,如有不足之处,还请指正。...什么是几何图形(Geometry) 几何图形可以随意和进行缩放而不变形,这是和位图最大的差异。...LineGeometry,通过指定直线的起点和终点来定义线条。 RectangleGeometry使有Rect结构来定义,指定矩形的相对位置,及高度和宽度。...虽然PathGeometry也能实现基本的几何图形,但是用WPF默认提供的类,则更简单,也方便理解。

    37310

    Linux6上UI缩放的考验和磨难

    之前,我曾认为显示器的分辨率可能是罪魁祸首,但由于我无法想象1080p和4K之间的差异会产生任何有意义的影响,因此忽略了它。...但是,在对我的设置进行了一些调整之后,我得出结论,虽然分辨率确实不是问题所在,但与之相关的问题是:用户界面缩放。...我不敢相信它看起来像UI缩放一样简单。 当然,在13英寸显示器上以100%缩放比例运行4K并非完全理想,因此我开始尝试使用分辨率和缩放因子的不同组合来确定某些组合是否比其他组合多或少。...运行一个快速命令以启用分数缩放(gsettings设置org.gnome.mutter实验功能“ ['x11-randr-fractional-scaling']”)使我可以使用125%、150%和175...我最终在2048×1152的适当中间位置上以100%的比例缩放,将UI字体设置为11。当然,这并不能最佳地利用4K显示屏,但是看起来不错,清晰、尺寸正确,并完全可用。

    1.7K40

    探究WPF中文字模糊的问题:TextOptions的用法

    像素对齐和抗锯齿 我们经常听到WPF具有分辨率无关性这个说法,因为WPF使用的是与设备无关的绘图系统,为字体和形状等内容指定大小或者尺寸的数值并不是真实的像素,在WPF中称之为设备无关单位。...渲染过程中,WPF会自动把设备无关单位转换为物理像素,由于设备的差异以及DPI设置不同,转换之后的像素很少是整数,然而无法使用零点几个像素点去绘制,WPF会使用抗锯齿特性进行补偿。...创建字形位图或者字形与字形之间的相对定位时,不会考虑最终位置。 Display:WPF4.0中引入的新的格式化文本的度量模式。它使用GDI兼容的文本度量。...缩放文本:缩放其实也是变换的一种形式,但相比其他的2D变换,Display模式在缩放文本时渲染的效果更差,主要是因为该模式下的文本度量不会随着缩放倍数线性变化,为了保持缩放的准确性,Display模式是对原始尺寸文字的位图进行缩放...在液晶显示器环境,ClearType技术增强了文本的清晰度和可读性。 ClearType使用亚像素呈现技术,通过将字符对齐到像素的小数部分,以更高的保真度显示文本的真实形状。

    77910

    在 C# 程序中嵌入百度地图的全面指南

    在现代应用程序开发中,地图服务已成为许多应用程序不可或缺的组成部分。无论是提供地理位置信息、路线规划,还是展示商家位置,地图服务的集成都能极大提升用户体验。...以下是基本步骤:1.1 创建项目使用 Visual Studio 创建一个新的 C# 项目。可以选择 WinForms、WPF 或 ASP.NET,根据项目需求来选择合适的类型。...基本功能实现在项目中嵌入百度地图的基本步骤如下:2.1 创建地图视图对于 WinForms 或 WPF 应用,我们可以使用 WebBrowser 控件来加载百度地图的网页。...3.2 地图自定义百度地图支持多种自定义设置,包括样式、控件、缩放等级等。可以通过 JavaScript API 对地图进行个性化设置。...总结本文详细介绍了如何在 C# 程序中嵌入百度地图,包括基本功能的实现和一些高级应用。通过结合 C# 后端与 JavaScript 前端,你可以创建功能丰富的地图应用程序。

    3.8K00

    【愚公系列】2023年11月 WPF控件专题 WebBrowser控件详解

    自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化的用户界面元素。自定义控件可以根据需求提供更多的功能和自定义化选项,以及更好的用户体验。...Zoom:设置网页缩放级别。2.常用场景WPF中的WebBrowser控件可以用于多种场景,常见的包括:显示Web页面:可以将WebBrowser控件放置于WPF窗体中,用于加载、显示Web页面。...扩展WPF中的WebBrowser控件支持通过JavaScript与HTML页面进行交互,可以在C#代码中调用JavaScript函数,同时也可以在JavaScript代码中调用C#中的方法。...代码中调用C#中的方法,则需要在C#代码中注册一个方法,并通过WebBrowser控件的ObjectForScripting属性将该方法传递给WebBrowser控件:webBrowser.ObjectForScripting...= new ScriptingObject();其中,ScriptingObject是一个自定义的C#类,该类中定义了可以供JavaScript调用的方法。

    1.5K12

    WPF中3D控件的使用

    你可以使用 WPF 的 3D API 来创建、显示和交互三维内容。以下是 WPF 中使用 3D 控件的一些基本概念和实现方法。1. WPF 3D 基础WPF 提供了丰富的 3D 图形支持。...Camera:控制视角,定义观察 3D 场景的视点。Lights:用于照亮场景中的物体。Transform3D:用于在 3D 空间中进行平移、旋转、缩放等操作。2. ...PerspectiveCamera:定义了摄像机的位置、朝向和视场角度。摄像机是观察 3D 场景的关键,设置 Position 来改变视角,LookDirection 来设置观察的方向。...控制 3D 模型的旋转要控制 3D 模型的旋转,可以使用 Transform3D 类来进行模型变换。你可以在 XAML 中直接使用,也可以在 C# 中通过代码来动态应用变换。...- 你可以使用 **`Transform3D`** 对 3D 模型进行旋转、缩放、平移等变换。

    15010

    C# WPF MVVM项目实战(进阶②)

    缩放效果 4.SkewTransform    扭转效果 5.TransformGroup    组合效果 6.MatrixTransform    是其他几个变形类的基类,矩阵方式实现效果 这里的代码较长...Visibility属性: WPF的Visibility属性是个枚举变量,有三种值:Collapsed、Hidden、Visible。...图片会按照设置的Width和Height显示,比例会失调 UniformToFill:保持原始宽高比进行缩放,以填充。如果两者的宽高比不同,源会被剪切掉多余的部分。...--------------------------------------------------------------------- 其它的知识点已经在之前讲解过,不懂得话参考以下链接阅读: C...# WPF MVVM项目实战(进阶①) C# WPF框架Caliburn.Micro入门实例1 C# 项目实战(经典) 02 — 操作演示 03 — 结尾 项目源码网盘下载地址 链接:https

    1.8K21

    开源项目:WPF在线音视频聊天项目

    一个基于.NET 6开发的在线音视频聊天项目,客户端使用WPF开发,后端使用.NET Core Web API。 一....项目介绍 一个基于.NET 6开发的在线音视频聊天项目,客户端使用WPF开发,后端使用.NET Core Web API。...SixLabors.ImageSharp 操作图片,因c#中操作图片需要微软的GDI绘图,但在linux上操作需要mono的libgdiplus库,处理效果并不理想。...WPF端 TXLiteAV 操作腾讯云的TRTC服务,本地设备音视频推流、获取房间内其他用户音视频数据。 XamlAnimatedGif 播放GIF,因设备效率问题,改动作者源码后重新打包使用。...开发,如下图: 红框内容需与服务端保持一致 已实现的功能 登录|注册 添加好友 音视频在线通话 聊天(图片、文字、富文本) 截屏(多显示器不同dpi支持) 客户端部分截图: 站长没有条件,录制一个登录动画

    1.8K10

    WPF 绘制对齐像素的清晰显示的线条

    于是我对此进行了一系列试验,对 WPF 像素对齐的各种方法进行了一次总结。...然而论其原因,就是因为我们屏幕太渣~哦~不,是因为绘制的线条没有与屏幕像素对齐,具体来说是视觉对象(Visual)的位置不在整数像素上或尺寸不是整数像素。...在 MacBook、Surface Pro 这些高档显示屏上,根本不用管这样的平衡问题;但在渣渣显示器上,微软把这种平衡的控制交给了应用的开发者。...,也不需要计算对齐屏幕的位置,只需要随便指定一个值即可,但相邻的绘制元素的值需要在 double 级别完全相同,多一点少一点都不行。...由于边框很粗,所以多一个少一个像素用户也注意不到。

    1.7K10

    【Unity3D】Unity 编辑器窗口布局 ( 创建 Unity3D 项目 | 添加物体 | 层级窗口 | 场景窗口 | 游戏窗口 | 属性窗口 | 项目窗口 | 控制台窗口 | 窗口位置修改 )

    ; 7、Project 项目窗口 Project 项目窗口 中 显示项目中的文件 , 包括 C# 代码脚本 , 资源 , 图片 , 音频 等文件 , 下图中红色矩形框中是项目窗口 ; 8、Console...控制台窗口 在开发时 , 如果需要调试 , 可以在 Console 控制台窗口 打印输出数据 , 下图中红色矩形框中是 控制台窗口 ; 9、窗口位置修改 上述窗口的位置是可以随意拖动修改的 , 如果想要恢复默认样式..., 选择 " 菜单栏 / Window / Layouts / Default " 选项 , 即可 将窗口恢复成默认位置 ; 10、设置字体大小 默认状态配置下 , 字体有点偏小 , 可以将字体设置的大一些...; 选择 " 菜单栏 / Edit / Preference " 选项 , 在弹出的 Preference 偏好设置 中 , 选择 " UI Scaling " 面板 , 右侧将当前缩放设置为...125% , 然后 重启 Unity 编辑器即可 ; 再次重启后 , 字体变得比较大了 ;

    3.8K20
    领券