路径最大宽度
MaxWitdh of Path
我正在开发一个应用程序,但我遇到了同样的问题。
由于某些原因,Path 并没有拉伸到程序的整个区域window(我以编程方式将应用程序window拉伸到两个屏幕),但是路径似乎有其自己的限制宽度。这是 Path 本身
的标记
<Grid >
<InkCanvas Name="inkCanvas"
Cursor="Cross"
UseCustomCursor="True"
EditingMode="{Binding EditingMode}">
<InkCanvas.InputBindings>
<KeyBinding Command="{Binding CloseAppCommand}"
Key="Esc"/>
<KeyBinding Command="{Binding DrawModeCommand}"
Key="F1"/>
</InkCanvas.InputBindings>
<i:Interaction.Behaviors>
<if:MouseBehaviour MouseX="{Binding MouseX, Mode=OneWayToSource}"
MouseY="{Binding MouseY, Mode=OneWayToSource}" />
</i:Interaction.Behaviors>
<InkCanvas.Background>
<ImageBrush ImageSource="{Binding Screenshot.Source}"></ImageBrush>
</InkCanvas.Background>
<Path Stroke="Black" Fill="Green" Opacity=".3">
<Path.Data>
<CombinedGeometry GeometryCombineMode="Exclude">
<CombinedGeometry.Geometry1>
<RectangleGeometry Rect="{Binding BlackoutRect.Rect}" >
</RectangleGeometry>
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<RectangleGeometry Rect="{Binding SelectionRect.Rect}" >
</RectangleGeometry>
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
</InkCanvas>
</Grid>
结果我们看到如下图:
例如,如果我们为路径指定 Width="300px"
<Path Stroke="Black" Fill="Green" Opacity=".3" Width="300px"...
,那么上面屏幕上绿色区域的宽度实际上会是300px,但是如果你指定例如300000px,图片将与上面的屏幕相同。也就是说,我得出的结论是 Path 元素具有最大宽度(顺便说一句,如果您指定 MaxWitdh="30000px",那么什么都不会无论如何更改,它将与上面的屏幕截图相同)
因此本帖的主要问题是:如何更改路径元素的最大大小?
InkCanvas 不会拉伸其子元素。
您可以添加一个执行所需布局的面板,并将其宽度和高度绑定到父级 InkCanvas 的实际宽度和实际高度:
<InkCanvas ...>
...
<Grid Width="{Binding ActualWidth,
RelativeSource={RelativeSource AncestorType=InkCanvas}}"
Height="{Binding ActualHeight,
RelativeSource={RelativeSource AncestorType=InkCanvas}}">
<Path Stretch="Uniform" ...>
...
</Path>
</Grid>
</InkCanvas>
我正在开发一个应用程序,但我遇到了同样的问题。 由于某些原因,Path 并没有拉伸到程序的整个区域window(我以编程方式将应用程序window拉伸到两个屏幕),但是路径似乎有其自己的限制宽度。这是 Path 本身
的标记 <Grid >
<InkCanvas Name="inkCanvas"
Cursor="Cross"
UseCustomCursor="True"
EditingMode="{Binding EditingMode}">
<InkCanvas.InputBindings>
<KeyBinding Command="{Binding CloseAppCommand}"
Key="Esc"/>
<KeyBinding Command="{Binding DrawModeCommand}"
Key="F1"/>
</InkCanvas.InputBindings>
<i:Interaction.Behaviors>
<if:MouseBehaviour MouseX="{Binding MouseX, Mode=OneWayToSource}"
MouseY="{Binding MouseY, Mode=OneWayToSource}" />
</i:Interaction.Behaviors>
<InkCanvas.Background>
<ImageBrush ImageSource="{Binding Screenshot.Source}"></ImageBrush>
</InkCanvas.Background>
<Path Stroke="Black" Fill="Green" Opacity=".3">
<Path.Data>
<CombinedGeometry GeometryCombineMode="Exclude">
<CombinedGeometry.Geometry1>
<RectangleGeometry Rect="{Binding BlackoutRect.Rect}" >
</RectangleGeometry>
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<RectangleGeometry Rect="{Binding SelectionRect.Rect}" >
</RectangleGeometry>
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
</InkCanvas>
</Grid>
结果我们看到如下图:
例如,如果我们为路径指定 Width="300px"
<Path Stroke="Black" Fill="Green" Opacity=".3" Width="300px"...
,那么上面屏幕上绿色区域的宽度实际上会是300px,但是如果你指定例如300000px,图片将与上面的屏幕相同。也就是说,我得出的结论是 Path 元素具有最大宽度(顺便说一句,如果您指定 MaxWitdh="30000px",那么什么都不会无论如何更改,它将与上面的屏幕截图相同)
因此本帖的主要问题是:如何更改路径元素的最大大小?
InkCanvas 不会拉伸其子元素。
您可以添加一个执行所需布局的面板,并将其宽度和高度绑定到父级 InkCanvas 的实际宽度和实际高度:
<InkCanvas ...>
...
<Grid Width="{Binding ActualWidth,
RelativeSource={RelativeSource AncestorType=InkCanvas}}"
Height="{Binding ActualHeight,
RelativeSource={RelativeSource AncestorType=InkCanvas}}">
<Path Stretch="Uniform" ...>
...
</Path>
</Grid>
</InkCanvas>