WPF/E Sample:开发简单的饼形报表


学习WPF/E也有一段日子了。前段时间老想着用WPF/E能画什么好。也许画个动态的2D报表,是个不错的选择。


示例中主要使用Ellipse画出椭圆,然后Ellipse.Clip截取一个扇形。同理,最终的显示效果如图:

<Ellipse Height="200" Width="200" x:Name="1" MouseLeave="javascript:leaveReport" MouseEnter="javascript:enterReport" Canvas.Left="30" Canvas.Top="30"

        Stroke="Black" StrokeThickness="1" Fill="SlateBlue">

         <Ellipse.Clip>

              <RectangleGeometry Rect="0, 0, 100, 100"/>

         </Ellipse.Clip>

         <Ellipse.RenderTransform>

              <ScaleTransform x:Name="r1" CenterX="100" CenterY="100" ScaleX="1" ScaleY="1"/>

         </Ellipse.RenderTransform>

</Ellipse>

MouseLeave当鼠标移出对象区域触发事件

MouseEnter当鼠标移入对象区域触发事件。

function enterReport(sender,args)
{
  var o=wpf.FindName("story_r"+sender.Name);
  o.Begin();
}

function leaveReport(sender,args)
{
    var o=wpf.FindName("story_r"+sender.Name);
    o.Stop();
}

上面的 ScaleTransform 是为了我们下面实现动态效果,XScaleX,YScaleY)坐标伸长或缩短(默认为1)

为了视觉效果。我们需要为完成的报表添加一些动态效果。比如鼠标移到指定的扇形,这个扇形就会变大。效果如图:

实现这个效果,我们需要使用BeginStoryboard来达到我们的目的。

<BeginStoryboard>

     <Storyboard>

          <DoubleAnimation x:Name="story_r1_1" Duration="0:0:1" Storyboard.TargetName="r1" Storyboard.TargetProperty="ScaleX" From="1" To="1.05"/>

          <DoubleAnimation x:Name="story_r1_2" Duration="0:0:1" Storyboard.TargetName="r1" Storyboard.TargetProperty="ScaleY" From="1" To="1.05"/>

     </Storyboard>

</BeginStoryboard>

上面显示了当Canvas.Loaded事件完成之后会自动在1秒内,将目标IDr1,属性:ScaleX,ScaleY从原始长度伸长0.05倍。

示例很简单,主要还都是一些WPF/E的基础控件,希望大家可以自己下载源码来学习。有不对的地方欢迎指出。大家共同学习WPF/E,进步。

源代码:http://files.cnblogs.com/cnzc/WPFESample.rar

如果你在本机看不到效果,请下载WPF/E ctp for windows.下载地址为:http://go.microsoft.com/fwlink/?linkid=77792&clcid=0x409

关于有时WPF/EIIS下面不支持的情况:http://www.cnblogs.com/cnzc/archive/2007/01/26/631218.html

很久没写文章还是感觉手生.


posted on 2007-01-26 16:27 小春 阅读(3278) 评论(8) 编辑 收藏