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 是为了我们下面实现动态效果,X(ScaleX),Y(ScaleY)坐标伸长或缩短(默认为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秒内,将目标ID:r1,属性: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/E在IIS下面不支持的情况:http://www.cnblogs.com/cnzc/archive/2007/01/26/631218.html
很久没写文章还是感觉手生.
