C# wpf 实现窗口按比例缩放

概述
做客户端有时为了让界面适用各种不同的系统分辨率,让界面内控件布局大小始终保存比例是一种方法。一般可以使用配置文件做不同分辨率的适配实现,或者通过代码根据不同的分辨率重新计算控件大小及位置实现。在wpf有一种更简单的方法,使用viewbox。

方法
ViewBox可以自动缩放其内部的元素,无论是控件、容器、文本都可以按比例自动缩放。想要实现整个窗口按比例缩放需要如下步骤:

ViewBox作为一级容器
一级容器即<Window>标签下第一个元素
设置二级容器大小
将窗口本身需要的容器设在ViewBox标签下,即成为二级容器,设置其大小。这个大小通常是设计图上的窗口大小。需要注意的是,二级容器大小必须大于等于适配的所有分辨率,比如适配的最大分辨率是1080p,则二级容器大小至少设为1080p。
二级容器大小为基准布局
其他控件大小都将相对于二级容器来布局。
代码如下:
下面代码中,窗口是按照1920x1080设计的,但实际的窗口只有640x360,但其显示的效果控件比例始终是一样的。

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="360" Width="640">
    <Viewbox>
        <Grid Width="1920" Height="1080">
            <Border CornerRadius="20" Width="1280" Height="720"   Background="#666666"></Border>
    </Grid>
    </Viewbox>
</Window>


效果
上述代码的显示效果如下

窗口大小640x360

窗口大小1280x720

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/u013113678/article/details/120734459

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值