簡體   English   中英

如何在WPF(故事板動畫)中以編程方式更改矩形的邊框?

[英]How can I programmatically change the border of a rectangle in WPF (storyboard animation)?

為了在后面的代碼中更改矩形的顏色,我可以使用:

        InitializeComponent();

        StackPanel myStackPanel = new StackPanel();
        myStackPanel.Margin = new Thickness(20);

        Rectangle myRectangle = new Rectangle();
        myRectangle.Name = "MyRectangle";

        // Create a name scope for the page.
        NameScope.SetNameScope(this, new NameScope());

        this.RegisterName(myRectangle.Name, myRectangle);
        myRectangle.Width = 100;
        myRectangle.Height = 100;
        SolidColorBrush mySolidColorBrush = new SolidColorBrush(Colors.Blue);
        this.RegisterName("MySolidColorBrush", mySolidColorBrush);
        myRectangle.Fill = mySolidColorBrush;
        SolidColorBrush blackBrush = new SolidColorBrush();
        blackBrush.Color = Colors.Black;
        myRectangle.StrokeThickness = 4;
        myRectangle.Stroke = blackBrush;

        ColorAnimation myColorAnimation = new ColorAnimation();
        myColorAnimation.From = Colors.Blue;
        myColorAnimation.To = Colors.Red;
        myColorAnimation.Duration = new Duration(TimeSpan.FromSeconds(1));
        Storyboard.SetTargetName(myColorAnimation, "MySolidColorBrush");
        Storyboard.SetTargetProperty(myColorAnimation,
            new PropertyPath(SolidColorBrush.ColorProperty));
       Storyboard myStoryboard = new Storyboard();

        myStoryboard.Children.Add(myColorAnimation);


        myRectangle.MouseEnter += delegate(object sender, MouseEventArgs e)
        {
            myStoryboard.Begin(this);
        };

        myStackPanel.Children.Add(myRectangle);
        this.Content = myStackPanel;

我如何才能對矩形的邊框做同樣的事情(實際上,我正在尋找一種閃爍邊框效果而不是褪色效果,也許是通過更改Stroke屬性)?

修改您的Stroke

    SolidColorBrush mySolidColorBrush = new SolidColorBrush(Colors.Blue);
    this.RegisterName("MySolidColorBrush", mySolidColorBrush);
    myRectangle.Fill = mySolidColorBrush;

    SolidColorBrush blackBrush = new SolidColorBrush(Colors.Black);
    this.RegisterName("MySolidColorBorderBrush", blackBrush);
    myRectangle.StrokeThickness = 4;
    myRectangle.Stroke = blackBrush;

和情節提要設置

ColorAnimation myColorAnimation = new ColorAnimation();
myColorAnimation.From = Colors.Black;
myColorAnimation.To = Colors.Blue;
myColorAnimation.Duration = new Duration(TimeSpan.FromSeconds(1));
Storyboard.SetTargetName(myColorAnimation, "MySolidColorBorderBrush");
Storyboard.SetTargetProperty(myColorAnimation,
        new PropertyPath(SolidColorBrush.ColorProperty));
Storyboard myStoryboard = new Storyboard();

myStoryboard.Children.Add(myColorAnimation);

僅用於存檔(xaml)

<StackPanel Margin="20">
    <Rectangle x:Name="MyRectangle" Width="100" Height="100" StrokeThickness="4">
        <Rectangle.Fill>
            <SolidColorBrush x:Name="MySolidColorBrush" Color="Blue" />
        </Rectangle.Fill>
        <Rectangle.Stroke>
            <SolidColorBrush x:Name="MySolidColorBorderBrush" Color="Black" />
        </Rectangle.Stroke>
        <Rectangle.Triggers>
            <EventTrigger RoutedEvent="MouseEnter">
                <BeginStoryboard>
                    <Storyboard Duration="0:0:1">
                        <ColorAnimation Storyboard.TargetName="MySolidColorBrush" Storyboard.TargetProperty="Color" From="Blue" To="Red" />
                        <ColorAnimation Storyboard.TargetName="MySolidColorBorderBrush" Storyboard.TargetProperty="Color" From="Black" To="Blue" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Rectangle.Triggers>
    </Rectangle>
</StackPanel>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM