我正在开发一个非常简单的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个宽度和高度。
有没有简单的方法可以解决这个问题?
答案 0 :(得分:0)
您是否确保放置控件的面板或视图框的宽度和高度设置为自动?
<Viewbox Height="Auto" Width="Auto"></Viewbox>