HTC到StoryBoard——DHTML迁移到WPF(二)

下载:http://files.cnblogs.com/civ3/storyBoard.rar

微软支持HTML组件技术HTC,但是安全和性能都有一定缺陷。在WPF中,利用StoryBoard可以快速实现一些以前需要用HTC才能较好实现的DHTML效果。
以下两个例子都很简单只是为了说明问题:
复用
DHTML:Style(+behavior)
WPF:Resource
形状
DHTML:VML的Shape,或DIV矩形
WPF:Rectangle
事件与行为
DHTML:Event.element用JS脚本
WPF:丰富的故事板特性

以下是源程序
DHTML

None.gif < html >< head >
ExpandedBlockStart.gifContractedBlock.gif
< style  type ="text/css" > dot.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif.oStyle
{dot.gif}{
InBlock.gif    behavior
:url(storyBoard.htc);
InBlock.gif    background-color
:Blue;
ExpandedBlockEnd.gif
}

None.gif
</ style >
None.gif
None.gif
< title > Civ3's testing on Storyboard </ title >
None.gif
</ head >
None.gif
< body >
None.gif
< div  style ="width:100px; height:100px;"  class ="oStyle" ></ div >
None.gif
</ body ></ html >
.htc
None.gif < PUBLIC:ATTACH EVENT = " onmouseover "  ONEVENT = " mouseover() " />  
None.gif
< PUBLIC:ATTACH EVENT = " onmouseout "  ONEVENT = " mouseout() " />  
None.gif
< PUBLIC:ATTACH EVENT = " onmousedown "  ONEVENT = " mousedown() " />  
None.gif
< PUBLIC:ATTACH EVENT = " onmouseup "  ONEVENT = " mouseup() " />
None.gif
< SCRIPT LANGUAGE = " JScript " >
ExpandedBlockStart.gifContractedBlock.gif    
function  mouseover() dot.gif {
InBlock.gif    event.srcElement.style.backgroundColor
='red'; 
ExpandedBlockEnd.gif}

ExpandedBlockStart.gifContractedBlock.gif
function  mouseout() dot.gif {
InBlock.gif    event.srcElement.style.backgroundColor
='blue'; 
InBlock.gif    event.srcElement.style.width
=100;
ExpandedBlockEnd.gif}

ExpandedBlockStart.gifContractedBlock.gif
function  mousedown() dot.gif {
InBlock.gif    event.srcElement.style.width
=110
ExpandedBlockEnd.gif}

ExpandedBlockStart.gifContractedBlock.gif
function  mouseup() dot.gif {
InBlock.gif    event.srcElement.style.width
=100;
ExpandedBlockEnd.gif}

None.gif
</ SCRIPT >
XAML
None.gif < Page  xmlns ="http://schemas.microsoft.com/winfx/avalon/2005"  
None.gif  xmlns:x
="http://schemas.microsoft.com/winfx/xaml/2005"
None.gif  WindowTitle
="Civ3's testing on Storyboard" >
None.gif
< Page .Resources >
None.gif 
< Style  TargetType ="{x:Type Rectangle}"  x:Key ="oStyle" >
None.gif    
< Setter  Property ="Rectangle.Fill" >
None.gif        
< Setter .Value >
None.gif          
< SolidColorBrush  Color ="Blue" />
None.gif        
</ Setter.Value >
None.gif    
</ Setter >
None.gif    
< Style .Triggers >
None.gif     
< EventTrigger  RoutedEvent ="Rectangle.MouseEnter" >
None.gif      
< EventTrigger .Actions >
None.gif          
< BeginStoryboard >
None.gif            
< Storyboard >               
None.gif              
< ColorAnimation 
None.gif                
Storyboard.TargetProperty ="(Rectangle.Fill).(SolidColorBrush.Color)"
None.gif                From
="Blue"  To ="Red"  Duration ="0:0:.5"   />   
None.gif            
</ Storyboard >
None.gif          
</ BeginStoryboard >
None.gif      
</ EventTrigger.Actions >
None.gif         
</ EventTrigger >
None.gif
None.gif     
< EventTrigger  RoutedEvent ="Rectangle.MouseLeave" >
None.gif      
< EventTrigger .Actions >
None.gif          
< BeginStoryboard >
None.gif            
< Storyboard >               
None.gif              
< ColorAnimation 
None.gif                
Storyboard.TargetProperty ="(Rectangle.Fill).(SolidColorBrush.Color)"
None.gif                To
="Blue"  Duration ="0:0:.5"   />
None.gif        
< DoubleAnimation
None.gif            
Storyboard.TargetProperty ="Width"
None.gif        To
="100"  Duration ="0:0:.2"   />
None.gif            
</ Storyboard >
None.gif
None.gif          
</ BeginStoryboard >
None.gif      
</ EventTrigger.Actions >
None.gif         
</ EventTrigger >
None.gif
None.gif     
< EventTrigger  RoutedEvent ="Rectangle.MouseDown" >
None.gif      
< EventTrigger .Actions >
None.gif          
< BeginStoryboard >
None.gif            
< Storyboard >               
None.gif              
< DoubleAnimation
None.gif            
Storyboard.TargetProperty ="Width"
None.gif        By
="10"  Duration ="0:0:.2"   />   
None.gif            
</ Storyboard >
None.gif          
</ BeginStoryboard >
None.gif      
</ EventTrigger.Actions >
None.gif         
</ EventTrigger >
None.gif
None.gif     
< EventTrigger  RoutedEvent ="Rectangle.MouseUp" >
None.gif      
< EventTrigger .Actions >
None.gif          
< BeginStoryboard >
None.gif            
< Storyboard >               
None.gif              
< DoubleAnimation
None.gif            
Storyboard.TargetProperty ="Width"
None.gif        To
="100"  Duration ="0:0:.2"   />   
None.gif            
</ Storyboard >
None.gif          
</ BeginStoryboard >
None.gif      
</ EventTrigger.Actions >
None.gif         
</ EventTrigger >
None.gif
None.gif    
</ Style.Triggers >
None.gif 
</ Style >
None.gif
</ Page.Resources >
None.gif  
< StackPanel  Margin ="20" >
None.gif
None.gif    
None.gif    
< Rectangle  Name ="MyRectangle"  Width ="100"  Height ="100"  Style ="{StaticResource oStyle}" />
None.gif  
</ StackPanel >
None.gif
</ Page >
None.gif

转载于:https://www.cnblogs.com/civ3/archive/2006/02/12/329359.html

猜你喜欢

转载自blog.csdn.net/weixin_34060299/article/details/93571514