none
请教关于wpf中使用的单位 RRS feed

  • 问题

  • 书上网上都说wpf 应用程序中使用的单位是 DPI 相关的..但是为什么我看到的是像素的呢? 如下这样设置窗口大小,显示的时候是看到以像素为单位的.

    <Window x:Class="WpfApplication1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
           
            Title="MainWindow" Height="350" Width="525">
        <Grid>
           
        </Grid>
    </Window>

    在代码中这样设置this.Width = 20.0,也是以像素为单位的,为什么呢? 

    先谢谢啦~

    2014年2月27日 16:23

答案

  • WPF中设置的像素是以96DPI为基础的,比如,你设置Height="350" Width="525",那是在96DPI下面宽度会为525,高度会为350,如果你把操作系统的DPI更改为150%(在显示设置里可以更改),然后运行程序,你会发现窗口的实际大小是Height="350*1.5" Width="525*1.5"。

    总而言之,在代码里面设置时单位是像素(在96DPI下的像素),但是程序运行时,会根据实际DPI来更改实际显示的像素。

    2014年2月28日 9:35
  • 谢谢你的回复!

    请问,我用wp8  1920*1080的手机做开发测试,,在界面上放一个控件,想让这个控件大小占屏幕宽高30% * 40%,我要怎么设置这个控件的大小呢?


    这个,首先你要先在界面上放一个grid,然后使用 <Grid.RowDefinitions> 与 <Grid.ColumnDefinitions>定义足够的行列数,然后再把你的控件放到grid里,并指定RowSpan 与 ColumnSpan
    2014年3月1日 2:53

全部回复

  • WPF中设置的像素是以96DPI为基础的,比如,你设置Height="350" Width="525",那是在96DPI下面宽度会为525,高度会为350,如果你把操作系统的DPI更改为150%(在显示设置里可以更改),然后运行程序,你会发现窗口的实际大小是Height="350*1.5" Width="525*1.5"。

    总而言之,在代码里面设置时单位是像素(在96DPI下的像素),但是程序运行时,会根据实际DPI来更改实际显示的像素。

    2014年2月28日 9:35
  • wpf,让你不用关心具体的设备是什么,你只要做好你的设计,然后把显示交给wpf自身去渲染。
    2014年2月28日 9:49
  • 谢谢你的回复!

    你是说,比如我设置了Height="800" Width="800", 在显示器上显示窗口的大小不一定是等于800实际像素大小吗?可是我在实际开发机上运行程序,窗口显示的大小却是实际的 800像素大小,我用截图工具测量了..然后我把同一个程序拿到另一台笔记本上运行,窗口却是满屏,超过了屏幕大小...我开发机台上的分辨率是1920*1080,23寸显示器,,,笔记本上的分辨率是1366*768,,14寸显示器.,

    这是怎么算的?

    2014年2月28日 14:38
  • 谢谢你的回复!

    请问,我用wp8  1920*1080的手机做开发测试,,在界面上放一个控件,想让这个控件大小占屏幕宽高30% * 40%,我要怎么设置这个控件的大小呢?

    2014年2月28日 14:46
  • 谢谢你的回复!

    你是说,比如我设置了Height="800" Width="800", 在显示器上显示窗口的大小不一定是等于800实际像素大小吗?可是我在实际开发机上运行程序,窗口显示的大小却是实际的 800像素大小,我用截图工具测量了..然后我把同一个程序拿到另一台笔记本上运行,窗口却是满屏,超过了屏幕大小...我开发机台上的分辨率是1920*1080,23寸显示器,,,笔记本上的分辨率是1366*768,,14寸显示器.,

    这是怎么算的?


    看下一楼的说法,你先要把dpi改了之后,实际显示的才会有差异。在windows xp上,更改的方法是在桌面属性里,显示器设置上,在win7下,同样。如果不清楚在哪,可以在windows帮助里输入dpi并回车。
    2014年3月1日 2:49
  • 谢谢你的回复!

    请问,我用wp8  1920*1080的手机做开发测试,,在界面上放一个控件,想让这个控件大小占屏幕宽高30% * 40%,我要怎么设置这个控件的大小呢?


    这个,首先你要先在界面上放一个grid,然后使用 <Grid.RowDefinitions> 与 <Grid.ColumnDefinitions>定义足够的行列数,然后再把你的控件放到grid里,并指定RowSpan 与 ColumnSpan
    2014年3月1日 2:53