gpt4 book ai didi

c# - WPF 像素到桌面像素

转载 作者:太空狗 更新时间:2023-10-30 00:36:41 28 4
gpt4 key购买 nike

我过去曾被链接到 this回答关于将 WPF 像素坐标转换为桌面像素坐标的类似问题,但是我不确定我是否理解所涉及的数学。

Astonish 的回答指出“每个 WPF 单位的像素数 = ConstantWPFUnit 大小 * 监视器 DPI;”并且“恒定的 WPF 单元大小为 1/96。”

在我的例子中,我从一个图形对象中获取了 DPI,该图形对象是我在截取桌面屏幕截图后创建的位图对象(因为我找不到 Astonish 所说的属性),所以我有:

Graphics g = Graphics.FromImage(bitmap);
float WpfUnit = (1 / 96) * g.DpiX;

鉴于从图形对象返回的 DPI 是 96,我剩下

WpfUnit = (1 / 96) * 96 = 1

但是,WpfUnit 出于某种(对我来说)未知的原因出现为 0。我能看到解决这个问题的唯一方法就是说

if(WpfUnit == 0) WpfUnit = 1;

即使这样也不能真正解决问题,因为高度值和顶部值,当按照链接答案中的建议乘以 WpfUnit 时,除了乘以 1 之外没有对它们做任何事情。

因此,总而言之,我仍然坚持将 WPF 像素转换为桌面像素。对此的任何帮助将不胜感激。

最佳答案

WpfUnit 显示为零,因为它使用 1/96 进行整数运算。将这些数字明确声明为 float 。

关于c# - WPF 像素到桌面像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1189384/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com