none
如何将WPF长度单位与像素单位进行换算 RRS feed

答案

  • 你好,

    可以使用下面的代码得到横向和纵向的换算率。

            void MainWindow_Loaded(object sender, RoutedEventArgs e)
            {
                Matrix m = PresentationSource.FromVisual(Application.Current.MainWindow).CompositionTarget.TransformToDevice;
                double dx = m.M11;
                double dy = m.M22; 
            }
    

     


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Bunliney 2011年11月10日 2:09
    2011年11月8日 6:05
    版主
  • 是的。这说明换算比是1:1。

    我记得WPF的FontSize单位是pt,gdi+的是磅。单位是不一样的。你可以把FontSize换算下再试试。

    为什么不直接用Textbox的大小呢?


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Bunliney 2011年11月10日 2:09
    2011年11月9日 2:40
    版主

全部回复

  • 你好,

    可以使用下面的代码得到横向和纵向的换算率。

            void MainWindow_Loaded(object sender, RoutedEventArgs e)
            {
                Matrix m = PresentationSource.FromVisual(Application.Current.MainWindow).CompositionTarget.TransformToDevice;
                double dx = m.M11;
                double dy = m.M22; 
            }
    

     


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Bunliney 2011年11月10日 2:09
    2011年11月8日 6:05
    版主
  • 我在我的计算机上得到的这两个值都是1,这是不是说明测试的机器上WPF的单位无关单位和像素换算比为1:1?

    我使用Graphics.MeasureString测量了一个文本,然后将长度赋给一个rect控件,文本给一个textbox,但rect的总是比显示的文本要长。


    --!
    2011年11月9日 2:02
  • 是的。这说明换算比是1:1。

    我记得WPF的FontSize单位是pt,gdi+的是磅。单位是不一样的。你可以把FontSize换算下再试试。

    为什么不直接用Textbox的大小呢?


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Bunliney 2011年11月10日 2:09
    2011年11月9日 2:40
    版主
  • 3ks,是我忘记了换算字体大小单位了,修正后得到的结果视觉上已经一致了。

     

    textbox不随着文本的多少改变其大小啊


    --!
    2011年11月10日 2:09