2016-04-20 6 views
0

Я работаю над очень простой игрой в WPF (я знаю, что wpf не предназначен для игр, но я делаю это для удовольствия). У меня есть класс Enemy, который происходит от CustomControl. Я написал фрагмент кода с шаблоном для этого элемента управления. вот код:Wpf custom geometry scaling

<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

Вы уверены, что панель или окно просмотра, на которое вы устанавливаете управление, имеют ширину и высоту, установленную на авто?

 Смежные вопросы

  • Нет связанных вопросов^_^