C# 如何在WPF中使用不同的坐标系?(仅适用于缩放)
(让我给你一些背景) 我目前正在设计一个应用程序,它应该根据一些数据生成一个可打印的A4页面。 当然,WPF的设备无关像素(96像素/英寸)在纸质世界中不是一个非常自然的测量单位。毫米之类的东西更合适。所以我拿出了计算器,得出了大约3.779的比例因子 事实证明,简单地用C# 如何在WPF中使用不同的坐标系?(仅适用于缩放),c#,wpf,font-size,dpi,C#,Wpf,Font Size,Dpi,(让我给你一些背景) 我目前正在设计一个应用程序,它应该根据一些数据生成一个可打印的A4页面。 当然,WPF的设备无关像素(96像素/英寸)在纸质世界中不是一个非常自然的测量单位。毫米之类的东西更合适。所以我拿出了计算器,得出了大约3.779的比例因子 事实证明,简单地用ScaleTransform将页面上应该显示的所有内容拍打,有一个糟糕的副作用:字体大小也会被缩放(自然)。然而,这不是我的本意。我希望12pt Arial像12pt Arial一样正常渲染 是否有其他方法可以更改坐标系,而无需
ScaleTransform
将页面上应该显示的所有内容拍打,有一个糟糕的副作用:字体大小也会被缩放(自然)。然而,这不是我的本意。我希望12pt Arial像12pt Arial一样正常渲染
是否有其他方法可以更改坐标系,而无需调用扩展名或其他方法来转换每个坐标、长度、厚度等?
-或-
是否有任何方法可以动态映射字体大小,作为从属属性?通过一个包装所有纸张内容的自定义控件,也许?只是为了
12/3.779=3.175
,不是吗?将其指定给包含的对象,并应向下分配给所有子对象。您还可以设置以点(FontSize=“10pt”)、英寸(FontSize=“10in”)或厘米(FontSize=“10cm”)为单位的大小。当然,实际大小取决于Windows的DPI设置以及显示器或打印机的DPI设置。对于概述的要求,您根本不需要做任何特殊的操作,只需继续使用厘米作为WPF元素本身的测量单位(即,不进行任何转换)-WPF设备独立性的本质使您能够:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="29.7cm" Width="21cm" FontSize="16pt">
<Grid>
<TextBlock Text="Sample" Height="1in" Width="1in" FontSize="12pt"
HorizontalAlignment="Center" VerticalAlignment="Center"
TextAlignment="Center"/>
</Grid>
</Window>
也就是说:您将获得一个在“cm
”中指定的A4窗口,其中在“in
”中指定了一个居中的方形文本框,在“pt
”中指定了一种字体。如果需要(例如,通过用户视图端口的缩放滑块),所有这些都将根据其相对大小,通过您可能另外应用的任何变换进行适当缩放,而不管每个变换是否使用不同的单位(即随意混合使用)
可用的单位是
px
(默认值)、in
、cm
和pt
,有关其规格的详细信息,请参见示例。我不希望在属性分配中引入此类“转换”。即使它隐藏了一些自定义语法.Thx,我也不知道。不过,我会接受Steffen Opels的回答,因为他提供了一个更详细的答案。谢谢,我不知道您在分配属性时可以指定单位。是的,这正是我想要的。