XAML 窗口和画布上的WPF单位不同,什么是窗口大小单位?

yxyvkwin  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(114)

当我创建一个WPF项目并运行下面的代码时,我会得到下面的窗口。我很困惑,因为椭圆直径和窗口宽度/高度都是“200”,但椭圆不适合窗口。
另外,我没有发布图像,但我在之前的实验中试图将窗口的高度和宽度设置为96,高度小于宽度。宽高比有点像我的显示器的宽高比。
我读到在WPF中每个单位是1/96英寸。我假设画布中的椭圆也是如此。那么,Windows的尺寸呢?它使用什么单位?
图片:
Simple WPF application window image.
验证码:

<Window x:Class="clock2.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:clock2"
        mc:Ignorable="d"
        Title="MainWindow" Height="200" Width="200">
    <Grid>
        <Canvas ClipToBounds="True">
            <Ellipse Canvas.Left="0.0" Canvas.Top="0.0" Width="200.0" Height="200.0" Fill="lightgray" />

        </Canvas>

    </Grid>
</Window>
mu0hgdu0

mu0hgdu01#

窗口的宽度和高度包括边框和标题栏的尺寸。
改为设置网格的大小,并在窗口上设置SizeToContent="WidthAndHeight"

<Window ... SizeToContent="WidthAndHeight">
    <Grid Height="200" Width="200">
        <Canvas ClipToBounds="True">
            <Ellipse Canvas.Left="0.0" Canvas.Top="0.0"
                     Width="200.0" Height="200.0" Fill="LightGray" />
        </Canvas>
    </Grid>
</Window>
p5cysglq

p5cysglq2#

如果您设置画布的大小并使用SizeToContent="WidthAndHeight",则可以摆脱网格:

<Window ... SizeToContent="WidthAndHeight">
    <Canvas Width="200" Height="200" Background="Aqua">
        <Ellipse Width="200" Height="200" Fill="red" Canvas.Top="0" Canvas.Left="0"/>
    </Canvas>
</Window>

相关问题