- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在 System.Windows.Media.DrawingVisual
中绘制一些东西,但我需要以毫米为单位绘制薄片。我该怎么做?
最佳答案
在 WPF 中,您甚至无法在不付出额外努力的情况下以像素为单位绘制内容。 WPF 使用“设备独立单位”,其中每个单位为 1/96 英寸。即使这只是理论上的关系,因为它取决于显示设备正确报告其分辨率,而这又取决于显示器、其配置以及用户设置的内容,例如在“大字体”设置中(即在屏幕分辨率设置中,单击“使文本和其他项目变大或变小”的链接)。
所有这些都会影响 WPF 对可用显示分辨率信息的解释,进而影响 WPF 选择如何呈现其“与设备无关”的 1/96 英寸单位。
最重要的是,Sheridan 提供的链接评论器确实是最接近以毫米为单位显示的,除非有很多额外的工作和来自用户的帮助。通过按提供的 factor
值(即 96/25.4
……在表达式中,您可以看到 25.4
从毫米转换为英寸,然后 96
将英寸转换为 1/96 英寸),您可以将毫米转换为 WPF native 使用的 96 dpi 单位。
假设显示器配置正确(一个乐观的假设,但它确实发生了 :)),这将根据您所需的基于毫米的尺寸在屏幕上相当准确地呈现。
请注意,您可以通过对呈现的 UI 元素使用转换来完成此缩放。最简单的方法是设置最外层容器对象的 LayoutTransform
属性,您希望在其中进行基于毫米的渲染。然后,您可以使用毫米值的位置和大小在该容器中布置对象,WPF 将使用转换以您想要的比例呈现容器和其中呈现的对象。
关于c# - 如何在 DrawingVisual 中以毫米为单位而不是以像素为单位绘制内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30848336/
我是一名优秀的程序员,十分优秀!