Wpf自定义几何缩放

时间:2016-04-20 19:06:25

标签: c# wpf wpf-controls pathgeometry

我正在开发一个非常简单的WPF游戏(我知道wpf不是为游戏而设计的,但我这样做很有趣)。我有一个Enemy类派生自CustomControl。我用这个控件的模板写了一段代码。 这是代码:

    <ControlTemplate TargetType="{x:Type elements:Enemy}">
                <Grid Width="{TemplateBinding ElementWidth}" Height="                                                       {TemplateBinding ElementHeight}">
                    <Path Fill="LightGoldenrodYellow" >
                        <Path.Data>
                            <PathGeometry>
                                <PathFigure StartPoint="20,20" IsClosed="True">
                                    <PathFigure.Segments>
                                        <LineSegment Point="18, 5"/>
                                        <ArcSegment Point="2,5" SweepDirection="Counterclockwise" RotationAngle="90" Size="3,5"/>
                                        <LineSegment Point="0,20"/>
                                        <LineSegment Point="5,17"/>
                                        <LineSegment Point="10,20"/>
                                        <LineSegment Point="15,17"/>
                                    </PathFigure.Segments>
                                </PathFigure>
                            </PathGeometry>
                        </Path.Data>
                    </Path>
                    <Path Fill="{TemplateBinding Background}"
                          Stroke="{TemplateBinding BorderBrush}"
                          StrokeThickness="{TemplateBinding BorderThickness}">
                        <Path.Data>
                            <GeometryGroup FillRule="EvenOdd">
                                <PathGeometry>
                                    <PathFigure StartPoint="20,20" IsClosed="True">
                                        <PathFigure.Segments>
                                            <LineSegment Point="18, 5"/>
                                            <ArcSegment Point="2,5" SweepDirection="Counterclockwise" RotationAngle="90" Size="3,5"/>
                                            <LineSegment Point="0,20"/>
                                            <LineSegment Point="5,17"/>
                                            <LineSegment Point="10,20"/>
                                            <LineSegment Point="15,17"/>
                                        </PathFigure.Segments>
                                    </PathFigure>
                                </PathGeometry>
                                <EllipseGeometry Center="6,6" RadiusX="3" RadiusY="3"/>
                                <EllipseGeometry Center="14,6" RadiusX="3" RadiusY="3"/>
                                <EllipseGeometry Center="6,6" RadiusX="1.5" RadiusY="1.5"/>
                                <EllipseGeometry Center="14,6" RadiusX="1.5" RadiusY="1.5"/>
                                <RectangleGeometry Rect="5,10,10,5" RadiusX="0" RadiusY="0"/>
                                <RectangleGeometry Rect="6,10,2.5,2"/>
                                <RectangleGeometry Rect="9,13,2.5,2"/>
                                <RectangleGeometry Rect="12,10,2.5,2"/>
                            </GeometryGroup>
                        </Path.Data>
                    </Path>
                </Grid>
            </ControlTemplate>

现在我遇到了一个问题,因为如果我将控件放在面板上,它的宽度和高度将固定为20个单位(如上面几何坐标中所定义)。 但是,我希望我的形状能够被安排到它在布局过程中收到的地方。所以我试图将Path元素放入Viewbox,但它仍然有20个宽度和高度。

有没有简单的方法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

您是否确保放置控件的面板或视图框的宽度和高度设置为自动?

<Viewbox Height="Auto" Width="Auto"></Viewbox>