奇怪,Frame类有个Opacity属性,设置其值为0.2一点反应都没有,又貌似没有其他属性可以设置透明度,难道是bug?如果是这样,那么Frame肯定是不能实现有透明度变化的动画了……
用Google搜了一下,找到这样两个帖子:
The animation worked when applied on other elements in a test project I made, including a Frame element with just a solid red background. I think it's just a limitation of the Frame element when rendering HTML. It uses the WebBrowser control which is just a wrapper around the MSHTML ActiveX control, I believe.
Hmm, it might be fun to write a Web browser in WPF...
Frame element is wrapping window with handle, thus it can not have animated opacity. However, you can create VisualBrush over Frame and Animate it
看来对HTML页面是真的没办法了,自己另外想办法实现咯:(
在设置了一个对象的Opacity动画之后,再为该对象设置一个Opacity值将会无效,奇怪的是也没有异常抛出,而且在该语句之后的语句也都不执行了。例如:
DoubleAnimation myDA = new DoubleAnimation(0.8, 0.0, new Duration(TimeSpan.FromMilliseconds(800)));
Storyboard.SetTargetName(myDA, "myObj");
Storyboard.SetTargetProperty(myDA, new PropertyPath(Canvas.OpacityProperty));
Storyboard mySB = new Storyboard();
mySB.Children.Add(myDA);
mySB.Begin(myObj);
若在此后再设置该对象的Opacity值将会无效,例如:
myObj.Opacity = 1.0;
且该句之后的语句都不会执行。想想可能是因为动画把该值给锁定了,于是尝试在动画完成之后remove掉该动画,于是把代码改成如下的样子...
写了两个多星期的WPF Application,今天需要在界面上增加点东西,想到用Blend 2来编辑XAML文件(画图还是比写代码方便很多),但是只有在Silverlight项目中才能方便地用Blend 2打开XAML文件,于是打开了一个最开始接触Silverlight时的几个例子,习惯性地Ctrl+F5,浏览器却给了我一个很大的惊奇:弹出了一个错误提示框:
The WPF/E installed on your system is no longer valid. Please go to
“http://go.microsoft.com/fwlink/?LinkID=81210&clcid=0x409e” for the latest version.
怏怏地跑到Silverlight官方网站去看看最新版本,找了半天还是只有Silverlight 1.1 Alpha-_-。好吧,我就当这个是最新版本了,重新下载了一遍,安装,按要求重启,打开项目,再编译运行,这次更是诡异了,浏览器一片空白,状态栏提示有JS错误。看看页面源代码,发现document.getElementById后的参数和div的id名称不一致了,我没有改过代码的呀!再开两个项目,发现还是这样,诡异的Orcas(Visual Studio 2008 Beta)……
不管了,继续编译,没有报错了,但是浏览器这次很直接告诉我我还没有装Silverlight……我ft!这么久白忙活了……
MS老大,alpha版也不是这么...
刚开始接触WPF不久,也是第一次尝试开始写C#,写定时器的时候以为C#中System.Timer中的Timer类,结果发现老是抛出个很奇怪的异常:
The calling thread cannot access this object because a different thread owns it.
后来才发现,其实WPF是有自己的定时器类的,那就是System.Windows.Threading中的Timer类,使用起来也很简单:
//构造一个DispatcherTimer类实例
DispatcherTimer dTimer = new System.Windows.Threading.DispatcherTimer();
//设置事件处理函数
dTimer.Tick += new EventHandler(dTimer_Tick);
//定时器时间间隔1s
dTimer.Interval = new TimeSpan(0,0,1);
//启动定时器
dTimer.Start();
在上例中,也可以使用dTimer.IsEnabled = true;来启动定时器。
Processed in 1.0469018 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号
2007-8
2007-8
用户中心
日志分类

最新日志
最新评论
统计信息






友情链接