如何使用[0; 1]中的坐标而不是WPF中的像素进行绘制?

时间:2016-05-25 13:54:16

标签: wpf

我的坐标是相对于控件大小,在0到1范围内。我目前使用RenderSize手动缩放来控制我的控制,这种方法很好,但肯定是错误的。

如何直接在0-1坐标中绘制?

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>
相关问题