Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在WPF中使用不同的坐标系?(仅适用于缩放)_C#_Wpf_Font Size_Dpi - Fatal编程技术网

C# 如何在WPF中使用不同的坐标系?(仅适用于缩放)

C# 如何在WPF中使用不同的坐标系?(仅适用于缩放),c#,wpf,font-size,dpi,C#,Wpf,Font Size,Dpi,(让我给你一些背景) 我目前正在设计一个应用程序,它应该根据一些数据生成一个可打印的A4页面。 当然,WPF的设备无关像素(96像素/英寸)在纸质世界中不是一个非常自然的测量单位。毫米之类的东西更合适。所以我拿出了计算器,得出了大约3.779的比例因子 事实证明,简单地用ScaleTransform将页面上应该显示的所有内容拍打,有一个糟糕的副作用:字体大小也会被缩放(自然)。然而,这不是我的本意。我希望12pt Arial像12pt Arial一样正常渲染 是否有其他方法可以更改坐标系,而无需

(让我给你一些背景) 我目前正在设计一个应用程序,它应该根据一些数据生成一个可打印的A4页面。 当然,WPF的设备无关像素(96像素/英寸)在纸质世界中不是一个非常自然的测量单位。毫米之类的东西更合适。所以我拿出了计算器,得出了大约3.779的比例因子

事实证明,简单地用
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的回答,因为他提供了一个更详细的答案。谢谢,我不知道您在分配属性时可以指定单位。是的,这正是我想要的。