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

概述

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

方法

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

  1. ViewBox作为一级容器
    一级容器即<Window>标签下第一个元素
  2. 设置二级容器大小
    将窗口本身需要的容器设在ViewBox标签下,即成为二级容器,设置其大小。这个大小通常是设计图上的窗口大小。需要注意的是,二级容器大小必须大于等于适配的所有分辨率,比如适配的最大分辨率是1080p,则二级容器大小至少设为1080p。
  3. 二级容器大小为基准布局
    其他控件大小都将相对于二级容器来布局。

代码如下:
下面代码中,窗口是按照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>

效果

上述代码的显示效果如下

  1. 窗口大小640x360
    在这里插入图片描述
  2. 窗口大小1280x720

在这里插入图片描述

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeOfCC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值