Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何转换动画颜色?

如何转换动画颜色?

提问于 2018-02-05 15:54:58
回答 2关注 0查看 363

我设法找出了如何制作一个WPF动画-转换之间的两种颜色。

代码语言:txt
AI代码解释
复制
ColorAnimation animation = new ColorAnimation
{
    From = Colors.DarkGreen,
    To = Colors.Transparent,
    Duration = new Duration(TimeSpan.FromSeconds(1.5)),
    AutoReverse = false
};
animation.Completed += new EventHandler(animation_Completed);
SolidColorBrush brush = new SolidColorBrush(Colors.Transparent);
animation.AccelerationRatio = 0.5;

Background = brush;
brush.BeginAnimation(SolidColorBrush.ColorProperty, animation);

回答 2

akjok54

发布于 2018-02-06 01:33:08

下面是一个使用故事板动画矩形渐变的例子。

代码语言:txt
AI代码解释
复制
    <Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="GradientBrushAnimation.MainWindow"
    x:Name="Window"
    Title="MainWindow"
    Width="640" Height="480">
    <Window.Resources>
        <Storyboard x:Key="Storyboard1">
            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)" Storyboard.TargetName="rectangle">
                <EasingColorKeyFrame KeyTime="0:0:2" Value="Red"/>
            </ColorAnimationUsingKeyFrames>
            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="rectangle">
                <EasingColorKeyFrame KeyTime="0:0:2" Value="#FF71FF00"/>
            </ColorAnimationUsingKeyFrames>
        </Storyboard>
    </Window.Resources>
    <Window.Triggers>
        <EventTrigger RoutedEvent="FrameworkElement.Loaded">
            <BeginStoryboard Storyboard="{StaticResource Storyboard1}"/>
        </EventTrigger>
    </Window.Triggers>

    <Grid x:Name="LayoutRoot">
        <Rectangle x:Name="rectangle" Margin="78,102,292,144" Stroke="Black">
            <Rectangle.Fill>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="Black" Offset="0"/>
                    <GradientStop Color="White" Offset="1"/>
                </LinearGradientBrush>
            </Rectangle.Fill>
        </Rectangle>
    </Grid>
</Window>

好好看解密

发布于 2018-02-06 00:09:04

最简单的方法是创建一个VisualBrush和交叉淡出开始-与结束值与Opacity属性位于子控件上。结果如下所示:

代码语言:txt
AI代码解释
复制
public class BrushAnimation : AnimationTimeline
{
    public override Type TargetPropertyType
    {
        get
        {
            return typeof(Brush);
        }
    }

    public override object GetCurrentValue(object defaultOriginValue,
                                           object defaultDestinationValue,
                                           AnimationClock animationClock)
    {
        return GetCurrentValue(defaultOriginValue as Brush,
                               defaultDestinationValue as Brush,
                               animationClock);
    }
    public object GetCurrentValue(Brush defaultOriginValue,
                                  Brush defaultDestinationValue,
                                  AnimationClock animationClock)
    {
        if (!animationClock.CurrentProgress.HasValue)
            return Brushes.Transparent;

        //use the standard values if From and To are not set 
        //(it is the value of the given property)
        defaultOriginValue = this.From ?? defaultOriginValue;
        defaultDestinationValue = this.To ?? defaultDestinationValue;

        if (animationClock.CurrentProgress.Value == 0)
            return defaultOriginValue;
        if (animationClock.CurrentProgress.Value == 1)
            return defaultDestinationValue;

        return new VisualBrush(new Border()
        {
            Width = 1,
            Height = 1,
            Background = defaultOriginValue,
            Child = new Border()
            {
                Background = defaultDestinationValue,
                Opacity = animationClock.CurrentProgress.Value,
            }
        });
    }

    protected override Freezable CreateInstanceCore()
    {
        return new BrushAnimation();
    }

    //we must define From and To, AnimationTimeline does not have this properties
    public Brush From
    {
        get { return (Brush)GetValue(FromProperty); }
        set { SetValue(FromProperty, value); }
    }
    public Brush To
    {
        get { return (Brush)GetValue(ToProperty); }
        set { SetValue(ToProperty, value); }
    }

    public static readonly DependencyProperty FromProperty =
        DependencyProperty.Register("From", typeof(Brush), typeof(BrushAnimation));
    public static readonly DependencyProperty ToProperty =
        DependencyProperty.Register("To", typeof(Brush), typeof(BrushAnimation));
}

在XAML中使用它:

代码语言:txt
AI代码解释
复制
<EventTrigger RoutedEvent="Loaded">
    <BeginStoryboard>
        <Storyboard >
            <local:BrushAnimation Storyboard.TargetName="border"
                                  Storyboard.TargetProperty="Background" 
                                  Duration="0:0:5" From="Red" 
                                  RepeatBehavior="Forever" AutoReverse="True" >
                <local:BrushAnimation.To>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="#FF00FF2E" Offset="0.005"/>
                        <GradientStop Color="#FFC5FF00" Offset="1"/>
                        <GradientStop Color="Blue" Offset="0.43"/>
                    </LinearGradientBrush>
                </local:BrushAnimation.To>
            </local:BrushAnimation>
        </Storyboard>
    </BeginStoryboard>
</EventTrigger>

或者在密码中:

代码语言:txt
AI代码解释
复制
var animation = new BrushAnimation
{
    From = Brushes.Red,
    To = new LinearGradientBrush (Colors.Green, Colors.Yellow, 45),
    Duration = new Duration(TimeSpan.FromSeconds(5)),
};
animation.Completed += new EventHandler(animation_Completed);
Storyboard.SetTarget(animation, border);
Storyboard.SetTargetProperty(animation, new PropertyPath("Background"));

var sb = new Storyboard();
sb.Children.Add(animation);
sb.Begin();
和开发者交流更多问题细节吧,去 写回答
相关文章
swift动画 —— 颜色渐变以及转换动画
这篇文章是通过结合使用CAGradientLayer、CABasicAnimation
CC老师
2022/01/14
2.1K0
swift动画 —— 颜色渐变以及转换动画
颜色转换,利用HSV颜色空间检测
绘制出这些通道的灰度版本 以便观察各通道的强度,像素越亮 代表的红色、绿色或蓝色值就越高。我们可以看到 粉色气球的红色值很高 蓝色值也相对比较高,但值大小不一 特别是当气球位于阴影下的时候。
小飞侠xp
2018/08/28
1.3K0
颜色模型与转换
本小节中将介绍几种OpenCV 4中能够互相转换的常见的颜色模型,例如RGB模型、HSV模型、Lab模型、YUV模型以及GRAY模型,并介绍这几种模型之间的数学转换关系,以及OpenCV 4中提供的这几种模型之间的变换函数。
小白学视觉
2019/11/18
1.9K0
05: 颜色空间转换
学习如何进行图片的颜色空间转换,视频中追踪特定颜色的物体。图片等可到文末引用处下载。
CodecWang
2021/12/07
7550
05: 颜色空间转换
C# winforms 输入颜色转换颜色名
本文告诉大家如何输入颜色,如0xFFFF8000转换为 Orange 在 winforms 程序
林德熙
2022/08/04
3930
C# winforms 输入颜色转换颜色名
本文告诉大家如何输入颜色,如0xFFFF8000转换为 Orange 在 winforms 程序
林德熙
2018/09/18
6250
OpenCV 的颜色空间转换
1 # coding: utf-8 2 3 ''' 4 第13章主要介绍:颜色空间转换 5 ''' 6 7 import cv2 8 import numpy as np 9 10 ''' 11 经常用到的颜色空间转换是: BGR<->Gray 和 BGR<->HSV 12 cv2.cvtColor(input_image , flag),flag是转换类型:cv2.COLOR_BGR2GRAY,cv2.COLOR_BGR2HSV 13 HSV(Hue , Saturation
py3study
2020/01/19
1.2K0
动画演示 floodfill 算法填充颜色
上次我们谈到如何使用深度优先搜索解决迷宫问题。这次,我们再来看看深度优先搜索的其他应用,来模仿 photoshop 的魔棒功能来填充颜色。使用扫描线填充算法(scan-line fill)会更快,这一节我们先介绍 floodfill 算法。
用户2870857
2019/12/23
1.2K0
动画演示 floodfill 算法填充颜色
OpenCV 的颜色空间转换
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119589.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/09
5660
Flutter十六进制颜色转换成颜色对象
Flutter中颜色的设置有很多方法,但是一般我使用的有4种 1、Color c1 = Color(0xFF3CAAFA); 2、Color c2 = Color.fromRGBO(60, 170, 250, 1); 3、Color c3 = Color.fromARGB(255, 60, 170, 250); 4、Color c5 = Colors.blue;
赵哥窟
2019/12/30
2.4K0
【python-opencv】转换颜色空间
OpenCV中有超过150种颜色空间转换方法。但是我们将研究只有两个最广泛使用的,BGR↔灰色和BGR↔HSV。
西西嘛呦
2020/08/26
1.2K0
【python-opencv】转换颜色空间
opencv 10 -- 图像 颜色空间转换
函数是:cv2.cvtColor(input_image ,flag), 其中 flag是转换类型
wust小吴
2019/07/08
2.6K0
fpga颜色空间转换视频演示
仿真通过vga驱动读入图片,首先经过rgb2ycbcr444算法再到ycbcr444转ycbcr422算法再到ycbcr422转ycbcr444算法最后ycbcr444再转会rgb真彩色图像,整个过程如下图所示。
FPGA开源工作室
2020/11/11
1.1K0
视频转换字符画动画
本想着按照自己的思路,不用网上的集成工具生成动态字符画视频。结果搞了3天,发觉还是能力有限,就先搁置在这吧,等到哪天回头再来。
Diuut
2022/11/22
9640
视频转换字符画动画
CV | 3.颜色空间及其转换
正因如此,第二章的跑车蓝幕扣去结果才会不尽人意(一些边缘部分还是没有被完全识别),毕竟原图就处在阳光下。
萝 卜
2022/05/12
4890
CV | 3.颜色空间及其转换
win10 uwp 颜色转换 字符串转颜色颜色转字符串
如果有小伙伴传入一个不带透明的,那么上面的代码就会出现异常,因为不带透明的颜色只有 6 个字符,所以就无法使用上面的代码,我修改了下面代码可以转换颜色
林德熙
2018/09/18
1.3K0
win10 uwp 颜色转换
            字符串转颜色颜色转字符串
RGB颜色值与十六进制颜色码转换工具
前言 今天开始学习HTML,发现老师没有给出颜色代码图,我只能自己动手了,然后就爬下这个页面并且把广告什么的去掉了,有需要的自己下载吧 RGB颜色值与十六进制颜色码转换工具.zip 用法 把文件解
Erwin
2018/06/28
1.5K0
dotnet OpenXML 转换 PathFillModeValues 为颜色特效
在 OpenXml 预设形状,有一些形状设置了 PathFillModeValues 枚举,此枚举提供了亮暗的蒙层特效。具体的特效是让形状选择一个画刷,在画刷上加上特效。如立体几何 Cube 形状,在 Cube 不同的面有不同的颜色,颜色的亮度不同
林德熙
2021/11/08
8720
OpenCV 入门教程:颜色空间转换
在图像处理和计算机视觉领域,颜色空间转换是一项重要的任务。不同的颜色空间具有不同的表示方式,可以用于不同的图像处理和分析任务。 OpenCV 提供了丰富的功能来进行颜色空间的转换和处理。本文将以颜色空间转换为中心,为你介绍使用 OpenCV 进行颜色空间转换的基本步骤和实例。
小蓝枣
2023/07/10
5130
OpenCV 入门教程:颜色空间转换
添加白天夜间模式转换动画
其实这个动画切换效果不是第一次看到了,最早看到是在一些volantis主题的用户博客那里,比如银河小徐那里,百度了一下也搜到过volantis相关的魔改教程,当时没当回事,直到在今年勇那里想到了相对完善的源码,不过他嵌入的不是很完美,按钮在一个比较尴尬的地方。和我的副标题重合了,js也是依赖于jquery的,和最新版butterfly去jquery的理念相悖,所以心血来潮对这个教程做下完善,顺便去jquery。
Akilar
2022/03/12
1K0

相似问题

如何设置EditText光标颜色?

2496

如何设置TabPage标题颜色?

2264

如何更改菜单悬停颜色?

2372

如何更改导航栏中后退按钮的颜色?

2248

如何删除Chrome自动填充的输入背景颜色?

21K
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
平安资管 | 架构师擅长4个领域
到家集团 | 技术VP擅长5个领域
擅长3个领域
擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档