WPF 路径和几何图形

时间:2023-12-13 20:39:26

原文 http://www.cnblogs.com/laoyang999/archive/2012/11/23/2783734.html

继承自Shap类的形状有:Rectangle、Ellipse、Polygon以及Polyline。这些类相对比较简单,还有一个继承自Shap类,并且功能最强大的类,即Path类。Path类可以包含任何简单形状、多组形状以及更复杂的要素,如曲线。

Path类提供了一个Data属性,该属性接受一个Geometry对像,Geometry是一个抽像类,不能直接创建。而需要使用如下的某个派生类创建。

  1. LineGeometry:线
  2. RectangleGeometry:矩形
  3. EllipseGeometry:椭圆
  4. GeometryGroup:图形组
  5. CombinedGeometry:合并图形
  6. PathGeometry :代表一个更加复杂的图形
  7. StreamGeometry :相当于PathGeometry的轻量级的类。该类可以节省内存,一旦创建就不能再修改。

 图形微语言

WPF创作人员为定义几何图形增加了一个更简明的替换语法,通过该语法可以用更少的标记表示详细的图形。这种语法通常称为图形微语言,也可以称为微路径语言。

通常的写法如下示例:

<path Data="M 0 0 L10 10"/>

微语言路径命令如下表:

名称 说明
M x,y      

 为几何图形创建一个新的PathFigure,并设置起点。该命令必须在其他命令使用之前,

也可以在绘制序列期间使用该命令移动坐标系统的原点(M代表Move)

 L x,y    创建一条到指定点的LineSegment
 H x  使用x值创建一条水平线
 V y  使用y值创建一条垂直线
 Z

 用于结束当前的PathFigure对象。并将IsClosed属性设置为Ture。如果不希望图形封闭,就

可以不用这个命令

上面还有一些命令没说明,等后续研究。下面,做一个关闭按钮的例子,其中用到微语言路径。

效果如下图

WPF 路径和几何图形

上图中一个是正常状态,另一个是鼠标放上去时的状态

代码如下:

WPF 路径和几何图形
<Button Width="15" Height="15" RenderTransformOrigin="-11,-5.9"
HorizontalAlignment="Left" Margin="100,213,0,0" VerticalAlignment="Top">
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="closeGD" Background="LightGray">
<Rectangle Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"
RadiusX="2" RadiusY="2" Stroke="Black" StrokeThickness="1">
</Rectangle>
<Rectangle Margin="3.5">
<Rectangle.Fill>
<VisualBrush>
<VisualBrush.Visual>
<Path x:Name="closePath" Stroke="Blue" StrokeThickness="2"
Data="M0 0L10 10 M10,0L0 10 "/>
</VisualBrush.Visual>
</VisualBrush>
</Rectangle.Fill>
</Rectangle>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="closePath"
Property="Stroke"
Value="Red"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="closeGD"
Property="Background" Value="White"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
WPF 路径和几何图形