2015-10-21 21 views
0

我試圖動態地創建圖像,當您將鼠標放在它們上方時會進行放大。我發現這個博客文章http://tozon.info/blog/post/2007/10/14/Three-ways-to-make-your-WPF-images-pop-out-on-MouseOver.aspx顯示瞭如何使用Storyboard來完成此操作。在C#中,我如何動態地創建圖像上的觸發器

它看起來相當直接的,而且我已經添加了故事板XAML來的App.xaml

現在我需要工作,如何將它們添加到我建在C#

的XAML圖像有要創建看起來像這樣

<Image Source="[Bitmap]" > 
    <Image.Triggers> 
     <EventTrigger RoutedEvent="Image.MouseEnter" > 
      <BeginStoryboard Storyboard="{StaticResource ExpandStoryboard}" /> 
     </EventTrigger> 
     <EventTrigger RoutedEvent="Image.MouseLeave" > 
      <BeginStoryboard Storyboard="{StaticResource ShrinkStoryboard}" /> 
     </EventTrigger> 
    </Image.Triggers> 
    <Image.RenderTransform> 
     <ScaleTransform ScaleX="1" ScaleY="1" /> 
    </Image.RenderTransform> 
</Image> 

我已經得到了圖像,故事板和C#(我認爲)創建的RenderTransform,但我不知道如何將故事板添加爲EventTriggers。

System.Windows.Controls.Image _Image = new System.Windows.Controls.Image(); 
_Image.Source = this.BitmapToBitmapImage(_Bitmap); // This bit is not really relevant for this question. It works fine though. 

ScaleTransform _OriginalScale = new ScaleTransform(); 
_OriginalScale.ScaleX = 1; 
_OriginalScale.ScaleY = 1; 

_Image.RenderTransform = _OriginalScale; 

Storyboard _ExpandStory = (Storyboard)Application.Current.FindResource("ExpandStoryboard"); 
Storyboard _ShrinkStory = (Storyboard)Application.Current.FindResource("ShrinkStoryboard"); 

_Image.Triggers.Add(WHAT GOES HERE); 

回答

1

您可以只創建2個EventTrigger S和增加Triggers正常。

var e1 = new EventTrigger(UIElement.MouseEnterEvent); 
//add actions for e1 
e1.Actions.Add(new BeginStoryboard{ Storyboard = _ExpandStory}); 
var e2 = new EventTrigger(UIElement.MouseLeaveEvent); 
//add actions for e2 
e2.Actions.Add(new BeginStoryboard { Storyboard = _ShrinkStory}); 
//add the 2 event triggers 
_Image.Triggers.Add(e1); 
_Image.Triggers.Add(e2); 
相關問題