欢迎光临:
   非常感谢您光临『华普软件』。本站是一个专业发布高质量VB、C#技术论文与源码的网站。本站提倡原创作品、高质量源码与论文,并无私奉献出数十万字的独家翻译资料,内容涉及RTF、GDI+、控件、游戏等诸多方面。本站内容遵从创作共同协议,如果转载请注明本站网址!

WPF小试牛刀

    昨天用VS2005和Blend编了一个简单的写字板程序,正式开始了WPF的开发之旅。下面简单介绍一下其中的收获:
1、    启动窗体的渐入显示,效果如下:

这里用到了2个特性:半透明窗体和时间线(TimeLine)。要让窗体支持半透明(异型窗体),需要如下设置:
            this.WindowStyle = WindowStyle.None;        //去掉边框
            this.AllowsTransparency = true;             //允许窗体透明
            this.Background = new SolidColorBrush(Colors.Transparent);  //设置背景色为透明
而时间线是动画的基础,如果你会用Flash编动画那么你会发现这个功能非常好用。本例中启动窗体的动画制作方法如下:
1)    在Blend中按F7键切换到动画视图方式:

2)    然后添加window.Loaded的事件触发器:

3)    新增一条时间线,并设置相应的关键帧:

4)    将第一个关键帧的透明度设置为0即可:

    按F5运行程序,这时可以看到LOGO渐入的动画效果。
    主窗体中也采用了几个动画,方法类似于上面。
2、    主窗体中的样式选择采用了比较高级的动画效果,参考了新版的Yahoo Messenger,效果如下:

其实它的主要实现方式还是采用的上面的简单动画的方式,不过应用了一些变形操作,比如在第一个关键帧中设置了0.1的缩放和-90的旋转:
  
  
另外,窗体中的各个样式选择块是采用的Image控件,通过MouseEnter事件的处理来实现鼠标移动到控件上控件放大并放到最上层(传统方法是设置ZOrder=0)。MouseEnter处理方法如下:
private void skin_MouseEnter(object sender, MouseEventArgs e)
{
            Image img = (Image)sender;
            img.RenderTransform = new ScaleTransform(1.2, 1.2);
}
在MouseLeave事件中还原:
private void skin_MouseLeave(object sender, MouseEventArgs e)
{
            Image img = (Image)sender;
            img.RenderTransform = new ScaleTransform(1, 1);
}
对于设置ZOrder颇费了些周折:一开始便发现在WPF中并没有ZOrder这个属性,google了一下发现问题所在。其实在WPF中元素的呈现顺序是按照XAML中的定义顺序进行的,因此只能通过调整子元素的加入顺序来实现ZOrder了(将需要置顶的控件最后加入),代码如下:
            //没有ZOrder了,只能将Child重新按照插入顺序构造
            Grid grd = (Grid)this.FindName("grid");
            grd.Children.Remove(img);
            grd.Children.Add(img);
            this.InvalidateVisual();
也就是简单的把当前控件移除,然后再重新加入即可。
3、    RichTextBox的改变:WPF中的RichTextBox编辑方式有了很大改变,以前习惯了通过Selection来操作文本属性(颜色、字体等),现在大部分改成了采用内置命令(Command)的方式。例如设置文本粗体的代码如下:
EditingCommands.ToggleBold.Execute(null, rtb);
你会发现使用内置Command非常的方便,大部分的常用操作WPF都封装好了。当然由于以前熟悉使用API来扩展RTB的功能,现在发现无从下手了,困惑ing!:(

总的说来,感觉WPF在基础层面上确实提供了非常强大的支持,能不能做出好看的UI效果只有看你的美术功底了。而由于前期工具还缺乏,导致频繁切换于VS2005、Expression Blend、Expression Design和Fireworks中,有点麻烦。不过能够作出非常霸道的界面效果感觉还是挺爽的。
另一方面,我的一个感觉是这样的界面开发更加接近于Web页面的设计了,对界面设计人员的专业要求将更高,不仅要求有美术功底,而且要求一定的软件开发经验或者脚本编写能力。从程序员的角度,以往有经验的程序员会“先代码后界面”以提高效率,而现在由于界面元素复杂且界面元素极有可能影响到代码实现,因此导致更多情况下是“先界面后代码”,这样对于编程效率会有一定影响。
以上是我的初步感受,可能随着继续学习WPF会推翻这些看法也未可知!


在谷歌搜索完整的WPF小试牛刀内容, 或者搜索本站相关的更多内容

文章来自: 本站原创
Tags:
引用通告: 查看所有引用 | 我要引用此文章
相关日志:

评论: 3 | 引用: 0 | 查看次数: 5326
  • 1
yy1213 [2008-01-18 09:18 AM]
和flash一样了!汗!~~~~~~~~~~~~~
Davidwu [2007-12-18 01:18 PM]
就是一般的ASP空间哈,内容是自己维护的。
cwood [2007-12-17 11:05 AM]
OP的空间是哪儿的?多少钱?我的web空间提供者竟然不允许我开启留言功能,nnd.
  • 1
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 验证码
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 开启