路径和几何图形

    继承自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。如果不希望图形封闭,就

可以不用这个命令

 

 

 

 

 

 

 

 

 

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

效果如下图

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

代码如下:

View Code
<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>

 

转载于:https://www.cnblogs.com/laoyang999/archive/2012/11/23/2783734.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值