有没有默认策略来准备应用程序以适应分辨率变化?

7

如何准备Silverlight或WPF应用程序以从高分辨率更改为低分辨率?

我猜只使用DockPanel策略适用于从小分辨率更改到大分辨率。

那么,有没有默认策略呢?谢谢。

问题:我有一个按钮,其像素结束于1024、768。当我将分辨率更改为800x600时。


我开始觉得这没有好的解决方案。只有缩放。 :O - alansiqueira27
你是否了解过控件在适应特定分辨率时经历的OnArrange/OnMeasure过程?这里的链接详细解释了http://msdn.microsoft.com/en-us/library/cc645025%28v=vs.95%29.aspx - Rus
3个回答

2

有一段时间我也遇到了类似的问题。为了解决这个问题,我使用了Viewbox来包围窗口内容。

使用1024x768分辨率而不是1280x1024的用户会看到应用程序内容变小,但他们更喜欢这种方式,因为不需要经常滚动屏幕。(WPF)

在我们下一个项目中,我将继续研究这个问题,希望能找到更好的解决方法!


哇,这可能很棒。我会学习它。稍后我会检查答案。谢谢。 - alansiqueira27
@Seva - 我们遇到的问题是如果分辨率差异太大,视图可能会被拉伸。例如,在宽屏笔记本电脑上使用应用程序。但总的来说,人们更喜欢这种方式。 - Haplo

1

嗯,你可以设计你的布局为Stretch,并以800x600为目标进行设计,这样每当布局变得大于800x600时,它就会适应。但是...

如果你真的想要一些花哨的东西,可以通过检测窗口大小/ActualHeight和ActualWidth(使用SizeChanged)来按比例缩放应用程序大小,然后通过代码(使用动态转换)进行缩放。

例如,在你的主视图中的“LayoutRoot”中:

var x = new ScaleTransform();
            x.ScaleX = .5; // Do fancy computation here
            x.ScaleY = .5; // Do fancy computation here
            this.LayoutRoot.RenderTransform = x;

只是一个想法,我的意思是如果屏幕比你的设计大,你可以放大,反之亦然。

希望这有所帮助。


是的,我希望不需要实现那个,但这是一个解决方案^^。谢谢。 - alansiqueira27
嗯,我认为代码更糟糕。你可以渲染整个布局!这非常好。对我来说,这是最好的答案=) - alansiqueira27

0

我认为这样做更好:


ScrollViewer Background="GreenYellow" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" Name="layoutRoot">
        Canvas Width="1024" Height="768">
            dataInput:Label Height="50" Name="label1" Width="100" Canvas.Left="540" Canvas.Top="131" Content="aeeeeeeee" />
            Button Canvas.Left="12" Canvas.Top="131" Content="按钮" Height="23" Name="button1" Width="75" />
            Button Canvas.Left="937" Canvas.Top="147" Content="按钮" Height="23" Name="button2" Width="75" />
            Button Canvas.Left="510" Canvas.Top="21" Content="按钮" Height="23" Name="button3" Width="75" />
            Button Canvas.Left="482" Canvas.Top="550" Content="按钮" Height="23" Name="button4" Width="75" />
        /Canvas>
    /ScrollViewer>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接