Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改画布内矩形的比例_C#_Wpf_Xaml_Wpf Controls_Shape - Fatal编程技术网

C# 更改画布内矩形的比例

C# 更改画布内矩形的比例,c#,wpf,xaml,wpf-controls,shape,C#,Wpf,Xaml,Wpf Controls,Shape,我有一个带有矩形的画布: <Canvas> <Rettangle/> </Canvas> 我该怎么做?最好的解决方案是创建自己的自定义画布,并使用这些问题中提到的一些技术实现重新调整大小和位置- 但对我来说,这个功能看起来非常类似于缩放;如果您的窗口只有画布,您可以尝试使用Kael Rowan提供的以下ZoomableCanvas,并在重新调整窗口大小时显式放大/缩小: 为什么不把所有的东西都放在一个盒子里 您只是希望矩形的位置是相对的还是它的大

我有一个带有矩形的
画布

<Canvas>
   <Rettangle/>
</Canvas>

我该怎么做?

最好的解决方案是创建自己的自定义画布,并使用这些问题中提到的一些技术实现重新调整大小和位置-

但对我来说,这个功能看起来非常类似于缩放;如果您的窗口只有画布,您可以尝试使用Kael Rowan提供的以下ZoomableCanvas,并在重新调整窗口大小时显式放大/缩小:


为什么不把所有的东西都放在一个盒子里



您只是希望矩形的位置是相对的还是它的大小也是相对的?从图像上看,两者都是。@akjoshi两者都是,大小也一样。如果你对画布应用ScaleTransform,我想它会这样做。我的画布在窗口内,当我调整窗口大小时,画布也会调整大小,我不会应用任何转换。为什么
画布
有特定的
宽度
高度
?我想让
画布
填满我的
窗口
内的所有可用空间。因此,如果我的窗口调整了大小,我必须动态更改画布的大小?您可以给它任何宽度和高度。与包含的矩形相比,它只需要有一个固定的大小。画布大小与矩形大小和位置必须有一定的预定义关系。您还可以设置Canvas.Width=1.0和Rectangle.Width=0.25。这就是Viewbox的功能。只需尝试样本XAML。将Viewbox用作窗口中的顶级容器。
----------------------------------------
|                                      |
|                                      |
|           ____                       |
|          |    |                      |
|          |____|                      |
|                                      |
|--------------------------------------


--------------------
|                   |
|   ___             |
|   |__|            |
|                   |
|-------------------
<Viewbox Stretch="Fill">
    <Canvas Width="400" Height="300">
        <Rectangle Canvas.Left="100" Canvas.Top="100" Width="100" Height="100" Fill="Blue"/>
    </Canvas>
</Viewbox>