添加采用所有窗口大小的画布,并在左下角添加一个按钮,按百分比添加边距

Posted

技术标签:

【中文标题】添加采用所有窗口大小的画布,并在左下角添加一个按钮,按百分比添加边距【英文标题】:Add canvas that takes all window size, and a button in bottom left corner, margined by percentage 【发布时间】:2018-04-10 12:21:03 【问题描述】:

我正在尝试有一个画布,它在调整大小时采用所有窗口大小,并在其上的左下角有一个按钮,但它会随着窗口调整大小(可能达到某个最大大小),并且边距左侧和底部的按钮也会随窗口调整大小。

我试图用这样的网格来实现它:

<Canvas Background = "LightGray" x:Name="PaintCanvas"
                VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
                Height="auto"  Width="auto">
        <Grid ShowGridLines="True">
            <Grid.RowDefinitions>
                <RowDefinition Height="8*" />
                <RowDefinition Height="20*" />
                <RowDefinition Height="62*" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="8*" />
                <ColumnDefinition Width="5*" />
                <ColumnDefinition Width="87*" />
            </Grid.ColumnDefinitions>

            <Button  x:Name="testBut" Content="TEST"
                Grid.Column="1" Grid.Row="1"
                MaxHeight="150"  MaxWidth="50" 
            />
        </Grid>
    </Canvas>

编辑:看来我必须用网格填充画布。

【问题讨论】:

【参考方案1】:

所以,我是这样处理的:

添加了我的网格(带有用作边距的预定义空单元格)作为 Window 的唯一子项。然后将 Canvas 添加为网格的子级,但指定它跨越其所有行和列 - 填充整个网格(和窗口):

<Canvas Background="WhiteSmoke" x:Name="PaintCanvas"
                       VerticalAlignment="Stretch" HorizontalAlignment="Stretch" 
                        Grid.RowSpan="3" Grid.ColumnSpan="3"/>

最后,我把按钮放在需要的单元格中

【讨论】:

以上是关于添加采用所有窗口大小的画布,并在左下角添加一个按钮,按百分比添加边距的主要内容,如果未能解决你的问题,请参考以下文章

可以在文件”另存为“的弹出窗口上添加自定义的路径选择按钮?

在VC++如何使控件大小修改为规定的大小?

winform 不想自动弹出窗口, 最小化後图标要显示在右下角 (像杀毒软件那样),要怎麼做?

如何在2D画布中添加矩形角点?

如何添加使用 PyQt 移动窗口大小时移动的文本编辑、标签和按钮?

在一个网页中怎样做一个悬浮窗口,并在右上角有关闭按钮的。