我的坐标是相对于控件大小,在0到1范围内。我目前使用RenderSize
手动缩放来控制我的控制,这种方法很好,但肯定是错误的。
如何直接在0-1坐标中绘制?
答案 0 :(得分:0)
您可以使用Path
控件并通过对Data
属性应用适当的转换来缩放其Geometry.Transform
,就像下面显示的简单示例一样。这样,您可以缩放绘制的形状,但不会缩放它们的笔触粗细。
<Grid>
<Canvas>
<Canvas.Resources>
<ScaleTransform x:Key="transform"
ScaleX="{Binding Value, ElementName=scaleSlider}"
ScaleY="{Binding Value, ElementName=scaleSlider}"/>
</Canvas.Resources>
<Path Stretch="None" Stroke="Blue" StrokeThickness="2">
<Path.Data>
<RectangleGeometry Rect="0.1,0.1,0.8,0.4"
Transform="{StaticResource transform}"/>
</Path.Data>
</Path>
<Path Stretch="None" Stroke="Red" StrokeThickness="2">
<Path.Data>
<EllipseGeometry Center="0.6,0.5" RadiusX="0.3" RadiusY="0.3"
Transform="{StaticResource transform}"/>
</Path.Data>
</Path>
</Canvas>
<Slider x:Name="scaleSlider" HorizontalAlignment="Center" VerticalAlignment="Bottom"
Width="100" Minimum="100" Maximum="500"/>
</Grid>