2009-01-22 77 views
8

(讓我給你一些上下文) 我目前正在設計一個應用程序,它應該根據一些數據生成可打印的A4頁面。自然地,WPF(96像素/英寸)的設備獨立像素在紙張世界中不是非常自然的測量單位。毫米之類的東西會更合適。所以我拿出了我的計算器,並得到了3.779左右的比例因子。如何在WPF中使用不同的座標系? (僅縮放)

事實證明,這是應該走在頁面上一個ScaleTransform簡單地拍打着一切有一個討厭的副作用:字體大小縮放太(自然)。但是,這不是我的意圖。我想12pt Arial渲染像12pt Arial會正常渲染。

是否有任何其他方式來改變座標系而不必調用擴展或其他什麼來轉換每一個座標,長度,厚度等? - 或 - 有沒有什麼辦法來地圖字體大小在飛,是DependencyProperties?通過包裝所有紙張內容的自定義控件,也許?

回答

17

對於概括的要求,你根本不需要做任何特殊的事情,只要繼續使用釐米作爲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」與「in」指定的中心廣場TextBox和在「pt」指定的字體指定的A4窗口。所有這些都可以通過您可能應用的任何變換(如果需要)(例如,通過用戶視圖端口的縮放滑塊)正確縮放,無論每個單元是否使用不同的單位(即混合使用),都要考慮它們的相對大小。

可用的單位是px(默認),incmpt,參見例如FrameworkElement.Height用於在它們的規範的信息。

+1

謝謝,我不知道在分配屬性時可以指定單位。是的,這正是我想要的。 – 2009-07-18 17:26:24

0

只是set the font size12/3.779 = 3.175,不是?將它分配給包含的對象,它應該滴流到所有的孩子。

+0

我不想要的是在財產分配中引入這樣的「轉換」。即使它隱藏了一些自定義語法。 – 2009-07-18 17:22:30

2

您還可以以英寸(FontSize =「10in」)或釐米(FontSize =「10cm」)爲單位設置點數(FontSize =「10pt」)的大小。當然,實際尺寸取決於Windows的DPI設置以及本例中顯示器或打印機的DPI。

+1

Thx,不知道。不過,我會接受Steffen Opels的回答,因爲他提供了更詳細的答案。 – 2009-07-18 17:24:38