代码之家  ›  专栏  ›  技术社区  ›  Christian Klauser

如何在WPF中使用不同的坐标系?(只缩放)

  •  8
  • Christian Klauser  · 技术社区  · 15 年前

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

    事实证明,只需拍打本应在页面上显示的所有内容, ScaleTransform 有一个讨厌的副作用: 字体大小也按比例缩放 (当然)。然而,这并不是我想要的。我想要12磅的Arial渲染,就像12磅的Arial正常渲染一样。

    还有别的办法吗 在不需要调用扩展名的情况下更改坐标系 或者用什么来转换每一个坐标,长度,厚度等等? -或 有什么办法吗 动态映射字体大小 ,是否为DependencyProperties?通过包装所有纸张内容的自定义控件,也许?

    3 回复  |  直到 15 年前
        1
  •  18
  •   Steffen Opel Norm Johanson    15 年前

    对于概述的要求,您根本不需要做任何特殊的事情,只需继续使用厘米作为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>
    

    也就是说:你会得到一个A4窗口 cm '中指定了居中的方形文本框' in '和中指定的字体' pt '.如果需要(例如,通过用户视图端口的缩放滑块),考虑到它们的相对大小,而不考虑使用不同的单位(即随意混合使用),所有这些都将通过您可能应用的任何转换进行适当的缩放。

    可用单位为 px (默认) 在里面 , 厘米 ,请参见示例 FrameworkElement.Height 有关其规格的详细信息。

        2
  •  2
  •   Lars Truijens    15 年前

    您还可以以点(fontsize=“10pt”)、英寸(fontsize=“10in”)或厘米(fontsize=“10cm”)为单位设置尺寸。当然,实际大小取决于Windows的dpi设置和显示器或打印机的dpi。

        3
  •  0
  •   CannibalSmith    15 年前

    只是 set the font size 12 / 3.779 = 3.175 不是吗?将它分配给包含对象,它应该向下滴落到所有子对象。