none
请问怎么样可以实现自动调整屏幕大小? RRS feed

  • 问题

  • 发布后的产品的画面如何才能做到自动调整屏幕大小,因为做的东西经常有打开后显示不完全的问题.

    我看了一下,咱们论坛这个拍卖专题也是这样,我的屏幕在正常大小下无法显示完全,只能缩小字体到75%才可以全部显示http://silverlightchina.com/sale/
    2009年7月27日 2:49

答案

  • 你好,
    一般来说可以捕捉resize事件,然后做变换:

     

    public partial class MainPage : UserControl

    {

     

    public MainPage()

    {

    InitializeComponent();

     

    this.Loaded += new RoutedEventHandler(MainPage_Loaded);

    }

     

    void MainPage_Loaded(object sender, RoutedEventArgs e)

    {

     

    App.Current.Host.Content.Resized += new EventHandler(Content_Resized);

    }

     

    double width, height;

     

    void Content_Resized(object sender, EventArgs e)

    {

     

    if (!App.Current.Host.Content.IsFullScreen)

    {

     

    if (width != 0 && height != 0)

    {

     

    ScaleTransform tt = new ScaleTransform();

    tt.ScaleX =

    App.Current.Host.Content.ActualWidth / width;

    tt.ScaleY =

    App.Current.Host.Content.ActualHeight / height;

     

    this.RenderTransform = tt;

    }

     

    else

    {

    width =

    App.Current.Host.Content.ActualWidth;

    height =

    App.Current.Host.Content.ActualHeight;

    }

    }

    }

    }


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    2009年7月29日 11:00
    版主

全部回复

  • 在在最外层,也就是UserControl和Grid之间,加一个ScrollViewer。
    2009年7月27日 3:13
  • 不好,用App.Curent.Host.Width/Height获取浏览器大小,动态调整Control大小,哈哈。
    2009年7月27日 3:33
  • 不要用绝对值控制页面布局

    在引用XAP的页中对OBJECT使用宽高100%的方法,如果是有些数据列确实过长那就用ScrollViewer包含起来.

    2009年7月27日 5:58
  • 用App.Curent.Host.Width/Height获取浏览器大小,动态调整Control大小,这一方法肯定不可行。大小受内容制约,而不是受屏幕控制,否则直接装个Viewbox开源控件不就行了么?
    2009年7月27日 8:34
  • 分别在 800*600 1024*768 1280*800和手机上试试
    做三个不同屏幕的界面!(不要笑我傻!我知道可以用相对布局,其它那样的效果不好看!还是要根据不同屏幕来调调样式)


    努力!写一个js解析器,一个svg插件,一个绘图程序,做好自己,呵呵~!
    2009年7月28日 11:54
    版主
  • 同意,我家里机器22寸,公司17寸,公司就显示不正常了.......看不见最下边的一条
    2009年7月29日 2:46
  • 恩!那就要你们公司给你配两个显示器吧!


    努力!写一个js解析器,一个svg插件,一个绘图程序,做好自己,呵呵~!
    2009年7月29日 3:04
    版主
  • 同意

    而且我觉应该弄一个标准实现,保证最低要求(软件配置需求),然后再考虑大分辨率下的实现。


    mhw11
    2009年7月29日 3:34
  • 你好,
    一般来说可以捕捉resize事件,然后做变换:

     

    public partial class MainPage : UserControl

    {

     

    public MainPage()

    {

    InitializeComponent();

     

    this.Loaded += new RoutedEventHandler(MainPage_Loaded);

    }

     

    void MainPage_Loaded(object sender, RoutedEventArgs e)

    {

     

    App.Current.Host.Content.Resized += new EventHandler(Content_Resized);

    }

     

    double width, height;

     

    void Content_Resized(object sender, EventArgs e)

    {

     

    if (!App.Current.Host.Content.IsFullScreen)

    {

     

    if (width != 0 && height != 0)

    {

     

    ScaleTransform tt = new ScaleTransform();

    tt.ScaleX =

    App.Current.Host.Content.ActualWidth / width;

    tt.ScaleY =

    App.Current.Host.Content.ActualHeight / height;

     

    this.RenderTransform = tt;

    }

     

    else

    {

    width =

    App.Current.Host.Content.ActualWidth;

    height =

    App.Current.Host.Content.ActualHeight;

    }

    }

    }

    }


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    2009年7月29日 11:00
    版主