将画布大小调整为窗口/用户控件大小

Posted

技术标签:

【中文标题】将画布大小调整为窗口/用户控件大小【英文标题】:Resize canvas to window / user control size 【发布时间】:2011-01-05 16:48:17 【问题描述】:

您好,我将 SVG 图像转换为 XAML/画布。我想将此画布设置为窗口/用户控件背景。

类似这样的:

    <Window x:Class="WpfApplication2.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">

    <Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
Name="svg2383" Width="800" Height="600">

    <---->
    </Canvas>
    </Window>

我的问题是画布太大,我想在窗口高度/宽度上自动调整大小/拉伸画布。

画布上的图像很复杂..http://kde-look.org/content/show.php/something_wall?content=115863

所以设置宽度和高度不是解决方案,因为这个画布包含其他画布。

【问题讨论】:

【参考方案1】:

去掉指定的宽高怎么样

<canvas Name="svg2383">
<---->
</canvas>

编辑:另一种方法是使用如下绑定:

<Window x:Name="MainWin">
   <Canvas Width="Binding ElementName=MainWin, Path=ActualWidth"
      Height="Binding ElementName=MainWin, Path=ActualHeight">
   <--->
   </Canvas>
</Window>

【讨论】:

所以设置宽度和高度不是解决方案,因为这个画布包含其他画布。所以画布有其他画布,他有其他画布,我必须设置许多属性高度和宽度......这不是解决方案。【参考方案2】:

您可以将画布放在Viewbox 中。这将允许您拉伸它以填充窗口,同时以恒定大小设计它。

【讨论】:

好的,但我想将画布作为背景,因为我想在这个背景上放置一些控件。如果我使用视图框,我必须在视图框中放置画布,在画布中我必须将控件作为网格与其他控件一起放置。我觉得不好。 @jminarik:制作一个单独的画布 - 将它用于您的其他控件,并将 Viewbox 和它放在一个网格中。应该可以正常工作。

以上是关于将画布大小调整为窗口/用户控件大小的主要内容,如果未能解决你的问题,请参考以下文章

C# WinForm的SplitContainer控件固定Panel大小

在窗口调整大小时动态调整画布大小

WPF 窗口中的可拖动和自动调整用户控件

如何在 Qt 设计器中使控件自动调整大小?

C#,实现窗口大小改变时窗口内的控件自动调整位置和大小时,groupbox内的控件为啥不自动调整

如何禁止用户调整Winform的大小