wpf实现旋转窗体效果的方法

[ At 2011/7/5 By wukong   4 comments ]

wpf实现一些很炫的效果是很容易的,2010年腾讯推出的基于wpf的概念版QQ就实现了很多超炫UI效果。一些诸如不规则窗体、动画效果、半透明特效,在普通winform来说实现起来比较麻烦,但对于wpf来说,一切都变得简单了。

今天介绍一下后面项目中我可能用到的旋转窗体效果,就是登录窗体或者启动界面旋转出现的动画效果。对于旋转窗体效果的wpf实现方法,网上有好多基于3D的,微软msdn上也介绍了3D实现的方法,不过我感觉就一个登录窗体的旋转效果,用3D来做,是不是有点大炮打蚊子。我这里用了基本的2D动画来实现窗体旋转效果,基本原理就是首先将window的背景设置为空,将AllowsTransparency属性设置为True,这样窗体就看起来是透明了,当然,要去掉标题栏和边框,也就是WindowStyle属性为None,ResizeModel属性为NoResize。然后在窗体中放置一个Grid,实际要旋转的就是这个Grid了,给Grid设置一个背景,可以是纯色也可以是图片,甚至可以直接用png的透明不规则图片作为背景来实现不规则窗体。然后创建事件触发器,在 Window.Loaded时执行旋转动画,来控制Grid翻转。这样旋转窗体效果就差不多实现了,呵呵。

...Read More...

再说wpf/wilverlight的动画之后元素属性处于只读无法更改的问题

[ At 2011/6/28 By wukong   0 comments ]

前几天贴了一篇关于wpf中代码执行属性变更动画之后,该属性无法修改,处于只读状态的处理方法一文《wpf动画结束后元素属性仍然只读无法更改的解决办法http://www.7es.cn/SilverLight/213.shtml,之后发现,该文原作者的方法有点费劲了,而后还是找到了另一个简单的解决办法来处理动画之后无法更改的属性。

...Read More...

wpf动画结束后元素属性仍然只读无法更改的解决办法

[ At 2011/6/25 By wukong   0 comments ]

转,最近遇到wpf中动画改编一个元素的属性,等待动画结束后,该属性仍然只读状态,无法更改,以下是转帖的内容,解决了此问题。

在最近做的项目中,发现一个棘手的问题:在经过动画处理后,那些属性值都无法改变了。花了很久找原因,后来发现是Animation本身的问题,才摸索出了一个有点流氓的解决方法:即在设置FillBehavior=Stop之前,设定属性到动画的结束值,在动画过程中,wpf不会马上显示属性的赋值结果,然后在动画结束后该属性被释放到初始值,即你设定的预期值,因为就是动画的结束值,所以你看不到变化,但是这时候的属性已经可以做改变了。

...Read More...

wpf/silverlight中程序代码控制模板样式颜色的方法

[ At 2011/6/15 By wukong   0 comments ]

wpf/silverlight应用通过c#代码改变模板中的颜色,以达到改变界面效果的方法,适合做动态皮肤效果,下面是我写的简单的测试代码,实现了在按钮事件中改变listboxitem的模板中的背景色,使其模板中默认的绿色过渡色变成红白过度色效果。

xaml代码如下 

...
Read More...

wpf的listbox实现平滑滑动效果

[ At 2011/6/9 By wukong   0 comments ]

wpf中listbox默认是按照项目一格一格滚动的,不是平滑的滑动效果,要实现wpf listbox平滑滑动,可以通过如下代码的方法,加入ScrollViewer.CanContentScroll属性使其值为false.

 
...
Read More...

silverlight/wpf中listbox横向展示内容的方法

[ At 2011/6/9 By wukong   0 comments ]

记录一个silverlight/wpf中listbox横向展示内容的方法,跟上篇介绍的《wpf中listbox多列展示实现方法》一样,还是通过修改ItemsPanel的样式来实现的,下面是代码

...
Read More...

wpf中listbox多列展示实现方法

[ At 2011/6/9 By wukong   0 comments ]

wpf中ListBox默认是只有一列显示子项内容的,通过wpf灵活的样式机制,是可以将listbox改为多列显示,这也是wpf样式的强大之处。

当然,实现多列子项展示,也可以改为使用listView或者GridView。

下面是一个简单的方法,通过样式更改listbox的itemsPanel,使他显示多列。 

...
Read More...

silverlight获取浏览器信息交互数据的方法

[ At 2011/2/23 By wukong   0 comments ]

silverlight和浏览器的交互,可以通过类BrowserInformation获取浏览器的相关信息,其中的一些方法和属性和js有一定的对应,js能实现的浏览器相关交互,也可以通过silverlight实现。

silverlight 3.0已经提供了对对类BrowserInformation 的支持,此类对应于浏览器的Navigator对象,可以通过HtmlPage类的BrowserInformation静态属性取得。

...
Read More...

silverlight元素FrameworkElement.LayoutUpdated布局变化事件

[ At 2011/1/10 By wukong   0 comments ]

silverlight的元素基类FrameworkElement有事件LayoutUpdated,该事件表示元素发生布局变化后出发,什么是布局发生变化,比较多了,比如尺寸的变化width height,或者位置的变化 left top,甚至被其他元素遮挡关系的变化,都算是布局变化。

这里主要说这个时间响应处理时的参数Sender,Sender不陌生,所有事件函数都有这个参数,表示触发该事件的对象。

Silverlight的元素LayoutUpdated事件中,Sender比较特殊,如果你实现一段代码来响应这个事件,往往会发现Sender是Null,如果不佳判断的使用它,将出现未初始化的异常错误。

...

Read More...

silverlight运行时动态创建元素的RenderSIze获取

[ At 2011/1/10 By wukong   0 comments ]

silverlight动态创建并插入父容器的元素,插入元素后如果直接获取该元素的RenderSize可能不准确,很可能是获取到0值或者元素的默认尺寸,而不是真是的RenderSize,想获得silverlight动态创建的元素的rendersize,看来在刚插入时还是不行的,必须等到其初始化之后。

基本上这个,很费尽,一个运行时动态创建的元素,加入页面后是没有实时绘制的,所以获取其RenderSIze会获得全零的值,只有等到该元素被sl的异步更新机制初始化过之后才会获得准确的RendSize,也就得在Loaded后,或者元素SizeChanged的时间里去处理获取了。

...Read More...
分页:[«]1[2][»]

日历

<< 2018-4 >>

Sun

Mon

Tue

Wed

Thu

Fri

Sat

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Powered By 空空如也 

Copyright 2018 www.7es.cn . Some Rights Reserved. Email:iamwgh@msn.com