silverlight中path对象使用总结

     Path对象用于绘制相边的一系列线条或曲线对象,线条和曲线的尺寸是通过数据属性声明。 
 
     请参见下面代码及其注释(xaml/pathscene.xaml):
 

<!-- EllipseGeometry -->
  
< Path  Fill ="Gold"  Stroke ="Black"  StrokeThickness ="1" >
    
< Path.Data >
      
< EllipseGeometry  Center ="50,50"  RadiusX ="50"  RadiusY ="50"   />
    
</ Path.Data >
  
</ Path >

  
<!-- RectangleGeometry -->
  
< Path  Fill ="Gold"  Stroke ="Black"  StrokeThickness ="1" >
    
< Path.Data >
      
< RectangleGeometry  Rect ="250,0,100,100"    />
      
<!-- 左,上,长,高 -->
    
</ Path.Data >
  
</ Path >

  
<!-- PathGeometry -->
  
< Path  Stroke ="Black"  StrokeThickness ="1" >
    
< Path.Data >
      
< PathGeometry >
        
< PathGeometry.Figures >
          
< PathFigure  StartPoint ="10,200" >
            
<!-- 起点坐标(左,高) -->
            
< PathFigure.Segments >
              
< LineSegment  Point ="100,130" />
              
<!-- 终点坐标(左,高) -->
            
</ PathFigure.Segments >
          
</ PathFigure >
        
</ PathGeometry.Figures >
      
</ PathGeometry >
    
</ Path.Data >
  
</ Path >

  
<!-- LineGeometry -->
  
< Path  Stroke ="Red"  StrokeThickness ="10"   >
    
< Path.Data >
      
< LineGeometry  StartPoint ="100,200"  EndPoint ="180,140"   />
    
</ Path.Data >
  
</ Path >


  
<!-- GeometryGroup组合的几何类型 -->
  
< Path  Stroke ="Black"  StrokeThickness ="1"  Fill ="#CCCCFF" >
    
< Path.Data >
      
<!--  Creates a composite shape from two geometries.  -->
      
< GeometryGroup  FillRule ="EvenOdd" >
        
< LineGeometry  StartPoint ="220,200"  EndPoint ="390,250"   />
        
< EllipseGeometry  Center ="250,200"  RadiusX ="40"  RadiusY ="40"   />
        
< RectangleGeometry  Rect ="250, 150, 100, 100"   />
      
</ GeometryGroup >
    
</ Path.Data >
  
</ Path >
 
     运行结果如下图(图中数字顺序为其代码的分布次序):

    
 
 
     下面演示使用createFromXaml动态加载上面的xaml内容的js脚本(xaml/CreateFromXaml.js):
Silverlight_JsWeb.CreateFromXaml.prototype =
{
    handleLoad: function(plugIn, userContext, sender) 
    {
        this.plugIn = plugIn;
        
        // 按钮事件挂钩示例: 查找按钮,然后附加事件处理程序
        sender.findName("container").addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, 
        this.handleMouseLeftButtonDown));
    },
    
    // 事件处理程序示例
    handleMouseLeftButtonDown:function (sender, eventArgs)
    {    
        this.createXaml(sender);
    },
    
    createXaml:function (sender)
    {
        
        var plugin = sender.getHost();
        //同心圆
        var xamlFragment = '
< Path  Fill ="Gold"  Stroke ="Black"  StrokeThickness ="1" > ';
            xamlFragment += '
< Path.Data > ';
            xamlFragment += '  
< GeometryGroup > ';
            xamlFragment += '    
< EllipseGeometry  Center ="60,80"  RadiusX ="50"  RadiusY ="50"   /> ';
            xamlFragment += '    
< EllipseGeometry  Center ="60,80"  RadiusX ="30"  RadiusY ="30"   /> ';
            xamlFragment += '  
</ GeometryGroup > ';
            xamlFragment += '
</ Path.Data > ';         
            xamlFragment += '
</ Path > ';        

         sender.children.add(plugin.content.createFromXaml(xamlFragment, false));
         
         //矩形RectangleGeometry
         xamlFragment = '
< Path  Fill ="Gold"  Stroke ="Black"  StrokeThickness ="1" > ';
            xamlFragment += '    
< Path.Data > ';
            xamlFragment += '        
< RectangleGeometry  Rect ="200,30,100,100"    /> ';
            xamlFragment += '        
<!-- 左,上,长,高 --> ';
            xamlFragment += '    
</ Path.Data > ';
            xamlFragment += '
</ Path > ';

         sender.children.add(plugin.content.createFromXaml(xamlFragment, false));          
          
         //直线PathGeometry
         xamlFragment = '
< Path  Stroke ="Black"  StrokeThickness ="1" > ';
            xamlFragment += '
< Path.Data > ';
            xamlFragment += '    
< PathGeometry > ';
            xamlFragment += '        
< PathGeometry.Figures > ';
            xamlFragment += '            
< PathFigure  StartPoint ="10,200" > ';
            xamlFragment += '                
<!-- 起点坐标(左,高) --> ';
            xamlFragment += '                
< PathFigure.Segments > ';
            xamlFragment += '                    
< LineSegment  Point ="100,130" /> ';
            xamlFragment += '                    
<!-- 终点坐标(左,高) --> ';
            xamlFragment += '                
</ PathFigure.Segments > ';
            xamlFragment += '            
</ PathFigure > ';
            xamlFragment += '        
</ PathGeometry.Figures > ';
            xamlFragment += '    
</ PathGeometry > ';
            xamlFragment += '
</ Path.Data > ';
            xamlFragment += '
</ Path > ';
            
         sender.children.add(plugin.content.createFromXaml(xamlFragment, false));   
         
         //  
<!-- LineGeometry -->
         xamlFragment = '
< Path  Stroke ="Red"  StrokeThickness ="10"   > ';
            xamlFragment += '
< Path.Data > ';
            xamlFragment += '    
< LineGeometry  StartPoint ="100,200"  EndPoint ="180,140"   /> ';
            xamlFragment += '
</ Path.Data > ';
            xamlFragment += '
</ Path > ';     
            
         sender.children.add(plugin.content.createFromXaml(xamlFragment, false));   
         
         
         //
<!-- GeometryGroup组合的几何类型 -->
         xamlFragment = '
< Path  Stroke ="Black"  StrokeThickness ="1"  Fill ="#CCCCFF" > ';  
            xamlFragment += '
< Path.Data > ';  
            xamlFragment += '    
<!--  Creates a composite shape from two geometries.  --> ';  
            xamlFragment += '    
< GeometryGroup  FillRule ="EvenOdd" > ';  
            xamlFragment += '        
< LineGeometry  StartPoint ="220,200"  EndPoint ="390,250"   /> ';  
            xamlFragment += '        
< EllipseGeometry  Center ="250,200"  RadiusX ="40"  RadiusY ="40"   /> ';  
            xamlFragment += '        
< RectangleGeometry  Rect ="250, 150, 100, 100"   /> ';  
            xamlFragment += '    
</ GeometryGroup > ';  
            xamlFragment += '
</ Path.Data > ';  
            xamlFragment += '
</ Path > ';  
            
         sender.children.add(plugin.content.createFromXaml(xamlFragment, false));  

//        sender.children.add(ellipse);
//        var xamlFragment = '
< TextBlock  Canvas.Top ="0"  Text ="createFromXaml 方法调用!"   /> ';
//        textBlock = plugin.content.createFromXaml(xamlFragment, false); 
//        
//        var xamlFragment2 = '
< Ellipse  Canvas.ZIndex ="1"  Canvas.Left ="95"  Canvas.Top ="95"  Height ="200"  
//                          Width
="200"  Stroke ="Black"  StrokeThickness ="10"  Fill ="Lime"   /> ';
//        ellipse = plugin.content.createFromXaml(xamlFragment2, false); 
//        ellipse.fill = this.createLinearGradientBrush(plugin);       
//        
//        sender.children.add(textBlock);
//        sender.children.add(ellipse);
    },
    
    createLinearGradientBrush:function (plugin)
    {    
        var xamlFragment = '
< LinearGradientBrush > ';
           xamlFragment +=   '
< GradientStop  Color ="Yellow"  Offset ="0.0"   /> ';
           xamlFragment +=   '
< GradientStop  Color ="Orange"  Offset ="0.5"   /> ';
           xamlFragment +=   '
< GradientStop  Color ="Red"  Offset ="1.0"   /> ';
           xamlFragment += '
</ LinearGradientBrush > '; 
        return plugin.content.createFromXaml(xamlFragment);
    }
}


     源码下载,请点击这里:)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值