WPF閃爍預警動畫的控制元件製作及winform呼叫WPF控制元件的方法

LisenYang發表於2014-01-10

一、WPF製作控制元件然後Winform呼叫WPF的控制元件:

1.建立一個WinForm的Application;

2.為inForm程式新增Reference,點選.NET 找到WindowsFormsIntegration這個Reference,加入你的Reference;

3.建立你的WPF UserControl;

4.生成;

二、WPF的UserControl的動畫閃爍程式碼:

<UserControl x:Class="WPFInWinForms.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Height="350" Width="525">
    <Grid>
        <Grid x:Name="RootElement" RenderTransformOrigin="0.5,0.5" Margin="216,160,263,0" Height="54" VerticalAlignment="Top">
            <Grid.RowDefinitions>
                <RowDefinition Height="6*" />
                <RowDefinition Height="9*" />
            </Grid.RowDefinitions>
            <Ellipse Canvas.Left="-5" Canvas.Top="-5" RenderTransformOrigin="0.5,0.5" x:Name="ellipse" IsHitTestVisible="False" Margin="0,0,-1,1" Grid.RowSpan="2">
                <Ellipse.Triggers>
                    <EventTrigger RoutedEvent="Window.Loaded">
                        <BeginStoryboard>
                            <Storyboard RepeatBehavior="Forever" >
                                <DoubleAnimation BeginTime="0" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)" From="1" To="10" Duration="00:00:01" />
                                <DoubleAnimation BeginTime="0" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)" From="1" To="10" Duration="00:00:01" />
                                <DoubleAnimation BeginTime="0" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.Opacity)" From="1" To="0" Duration="00:00:01" />
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                </Ellipse.Triggers>
                <Ellipse.RenderTransform>
                    <ScaleTransform />
                </Ellipse.RenderTransform>
                <Ellipse.Fill>
                    <RadialGradientBrush>
                        <GradientStop Color="#00FF0000" />
                        <GradientStop Color="#FFFF0000" Offset="0.25" />
                        <GradientStop Color="#00FF0000" Offset="0.5" />
                        <GradientStop Color="#FFFF0000" Offset="0.75" />
                        <GradientStop Color="#00FF0000" Offset="1" />
                    </RadialGradientBrush>
                </Ellipse.Fill>
            </Ellipse>
        </Grid>
    </Grid>
</UserControl>

在完成上面的第一項後,點生成,左側的工具箱就有一個UserControl的自寫控制元件,直接拖動即可,這裡winform會直接呼叫elementHost,效果如圖:


我這裡寫的第一個是WPF的動畫閃爍的效果,但是在winform中不能顯示出來,不知道是WPF哪個屬性有問題,還在研究中,第二個控制元件就可以直接使用。第一個閃爍效果在WPF窗體中是可以使用的,效果如圖:


其實在winform可以直接顯示GIF圖,實現閃爍的效果,用PictureBox控制元件即可,效果如圖:


相關文章