1

我正在开发一个 WPF 应用程序。给定一个几何字符串路径,例如:

F1 M 27,18L 23,26L 33,30L 24,38L 33,46L 23,50L 27,58L 45,58L 55,38L 45,18L 27,18 Z

是否可以将图形缩放到宽度和高度(无论原始图形有多小/大),同时保持图形作为一个整体,然后最终返回新缩放图形的字符串路径表示?

4

2 回答 2

2

无需缩放路径几何字符串中的值。只需将它放在控件的Data属性中并根据需要Path设置其Width,HeightStretch属性:

<Path Data="F1 M27,18 L23,26 33,30 24,38 33,46 23,50 27,58 45,58 55,38 45,18 27,18 Z"
      Width="100" Height="100" Stretch="Uniform" Fill="Black"/>
于 2015-09-02T20:39:48.350 回答
0

是的,你可以做到!您唯一需要做的就是使用 aViewbox来包装物品。这是一个带有我已经完成的代码的示例,在这种情况下,我使用几何作为DrawingBrush

...
<UserControl.Resources>
    <DrawingBrush x:Key="Field" Stretch="Uniform">
        <DrawingBrush.Drawing>
            <DrawingGroup>
                <GeometryDrawing Brush="{StaticResource FieldGrassBrush}" Geometry="F1 M 91.733,119.946C 92.8352,122.738 93.9374,125.529 92.9241,129.209C 91.9107,132.889 88.7819,137.458 84.4263,139.271C 80.0707,141.084 74.4885,140.142 70.8885,137.982C 67.2885,135.822 65.6707,132.444 65.1819,129.182C 64.693,125.92 65.333,122.773 65.973,119.626L 0.16,53.9203C 0.444319,53.4758 0.728638,53.0312 3.48413,48.7023C 6.23962,44.3733 11.4663,36.16 18.5596,28C 25.653,19.84 34.613,11.7333 
                ........
            </DrawingGroup>
        </DrawingBrush.Drawing>
    </DrawingBrush>
</UserControl.Resources>
...

然后是 View Box(注意 Grid 已经固定HeightWidth,但是会被拉伸到 Viewbox 的大小,在这种情况下,是以统一的方式):

...
<Viewbox Stretch="Uniform" Grid.Row="2" Grid.ColumnSpan="2">
    <Grid Height="300" Width="390">
        <Rectangle Fill="{DynamicResource Field}" StrokeThickness="0"/>
...
于 2015-09-02T19:56:04.690 回答