none
Win8 Metro(C++)应用开发如何实现分辨率自适应? RRS feed

  • 问题

  • 1、请问获取屏幕当前分辨率的API是哪个?

    2、如何实现控件的等比拉伸?在安卓开发中有个概念,可以设置分辨率基础值dp,如果一个图片尺寸为200x100,当dp设置为1.5时,图片宽高仍然设置为200x100,但图片能够自动拉伸为300x200,请问metro是否有类似的解决方案,如果没有该如何实现?

    3、布局的分辨率自适应如何实现?因为界面比较复杂,不能够统一使用布局控件,是否只能在程序中进行特殊处理?

    2012年8月6日 2:49

答案

  • 	CoreWindow^ rcWindow = Windows::UI::Xaml::Window::Current->CoreWindow;
    	Rect rcScreen = rcWindow->Bounds;

    获得当前屏幕的分辨率

    this->SizeChanged += ref new SizeChangedEventHandler(this, &Page::Page_SizeChanged); 添加这个消息就可以在Page中捕获到大小改变的消息,然后自己处理

    2012年8月6日 7:29
  • 如果你良好的使用了布局系统,如Grid等布局组合使用,可以设计出一个适应不同分辨的应用界面的。 Grid布局中的元素在没有强制设定大小和位置情况下,默认是进行填充显示的,所以使用Grid作为布局的最高层,有利于其中元素对不同大小页面的自动适应。

    如果限制使用布局,则你就需要根据当前页面大小 (即分辨率,我们推荐通过当前窗体大小来计算分辨率)来计算布局你的元素。在不同DPI下,窗体大小返回相同,这点说明了Metro 度量与DPI独立。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年8月6日 9:45
    版主

全部回复

  • 	CoreWindow^ rcWindow = Windows::UI::Xaml::Window::Current->CoreWindow;
    	Rect rcScreen = rcWindow->Bounds;

    获得当前屏幕的分辨率

    this->SizeChanged += ref new SizeChangedEventHandler(this, &Page::Page_SizeChanged); 添加这个消息就可以在Page中捕获到大小改变的消息,然后自己处理

    2012年8月6日 7:29
  • 如果你良好的使用了布局系统,如Grid等布局组合使用,可以设计出一个适应不同分辨的应用界面的。 Grid布局中的元素在没有强制设定大小和位置情况下,默认是进行填充显示的,所以使用Grid作为布局的最高层,有利于其中元素对不同大小页面的自动适应。

    如果限制使用布局,则你就需要根据当前页面大小 (即分辨率,我们推荐通过当前窗体大小来计算分辨率)来计算布局你的元素。在不同DPI下,窗体大小返回相同,这点说明了Metro 度量与DPI独立。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年8月6日 9:45
    版主