如何将动画gif添加到按钮?

问题描述 投票:0回答:4

你能告诉我如何在 C# 中向按钮添加动画 gif 吗?仅仅通过将 gif 添加到资源并设置为按钮图像并不能很好地工作(下一个帧出现在前一个帧之上)。问题似乎在于 c# 如何处理透明度,但我不知道如何解决它。

提前致谢。

--- 编辑 ---

播放完 gif 后,问题出在 gif 的透明度上。下一帧是在前一帧之上绘制的,因此我想要在动画中间变得透明的元素只是没有正确执行(它们仍然具有前一帧的颜色)。解决方案是在下一帧上创建白色区域以覆盖前一帧。白色是我的透明颜色,所以之后一切看起来都很好:)

我希望有人会看到它有用。 快乐编程:)

c# animation button gif animated-gif
4个回答
3
投票
如果在

.Image

 属性上使用,
GIF 动画将自动播放,但不在
.BackGroundImage
属性上使用。


2
投票

为此,您需要执行以下操作:

  1. 将 BackGroundImageLayout 属性设置为 Center。 该属性默认设置为“平铺”。

  2. 将按钮的 Image 属性设置为动画 GIF。

这会起作用,因为我测试了它,并且它对我有用。

编辑:设计师代码发布在下面:

 this.Button4.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
 this.Button4.Image = (System.Drawing.Image)resources.GetObject("Button4.Image");
 this.Button4.Location = new System.Drawing.Point(220, 329);
 this.Button4.Name = "Button4";
 this.Button4.Size = new System.Drawing.Size(81, 68);
 this.Button4.TabIndex = 4;
 this.Button4.Text = "Button4";
 this.Button4.UseVisualStyleBackColor = true;

1
投票

我已经可以工作了。

2 件事中的 1 件事对我有用:

  1. 我重新编辑了 gif,为每个帧添加属性以取消自身绘制。

  2. 我已经更换了VS的版本(我之前用的是免费的专业学生版,现在我 我使用 MSDN 订阅中的一个)

感谢大家的意见。它引导我得出结论,这可能是 VS 本身的问题,而不是我的编程风格:)


1
投票
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Media;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        SoundPlayer sp = new SoundPlayer(@"1.wav");
        SoundPlayer s = new SoundPlayer(@"2.wav");

        private System.Windows.Forms.Label[] arLabel;
        int temp = 10;
        int help = 0;
        int r = 0, b = 0, a, tem = 0;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            f1();
        }

          private void arLabel_Click(object sender, System.EventArgs e)
        {
            Label myButton = (Label)sender;


            if (myButton.Text == "")
            {

                myButton.ForeColor = System.Drawing.Color.Red;



                sp.Play();
                temp = 1;

                myButton.Text = "x".ToString();
                help = 0;
                f3();
            }
            for (int i = 0; i < arLabel.Length; i++)
            {
                if (arLabel[i].Text != "x")
                    this.arLabel[i].ForeColor = System.Drawing.Color.Green;
            }

            s.Play();
//------------------------------------------------------------------------------------------------------------------------------------

            if (temp == 1)
            {
                if (arLabel[6].Text == "" && arLabel[0].Text == "x" || arLabel[8].Text=="x"&&arLabel[6].Text=="")
                    arLabel[6].Text = "o".ToString();
                else if (arLabel[4].Text == "")
                    arLabel[4].Text = "o".ToString();
                //------------------------------------------------------------------------------------------------------------------------------------

                else if (arLabel[0].Text == arLabel[1].Text && arLabel[2].Text == "")//
                    arLabel[2].Text = "o".ToString();
                else if (arLabel[0].Text == arLabel[2].Text && arLabel[1].Text == "")//
                    arLabel[1].Text = "o".ToString();
                else if (arLabel[1].Text == arLabel[2].Text && arLabel[0].Text == "")//
                    arLabel[0].Text = "o".ToString();
                //------------------------------------------------------------------------------------------------------------------------------------
                else if (arLabel[6].Text == arLabel[7].Text && arLabel[8].Text == "")
                    arLabel[8].Text = "o".ToString();
                else if (arLabel[6].Text == arLabel[8].Text && arLabel[7].Text == "")
                    arLabel[7].Text = "o".ToString();
                else if (arLabel[8].Text == arLabel[7].Text && arLabel[6].Text == "")
                    arLabel[6].Text = "o".ToString();
                //------------------------------------------------------------------------------------------------------------------------------------
                else if (arLabel[3].Text == arLabel[4].Text && arLabel[5].Text == "")
                    arLabel[5].Text = "o".ToString();
                else if (arLabel[3].Text == arLabel[5].Text && arLabel[4].Text == "")
                    arLabel[4].Text = "o".ToString();
                else if (arLabel[5].Text == arLabel[4].Text && arLabel[3].Text == "")
                    arLabel[3].Text = "o".ToString();
                //------------------------------------------------------------------------------------------------------------------------------------
                else if (arLabel[0].Text == arLabel[3].Text && arLabel[6].Text == "")
                    arLabel[6].Text = "o".ToString();
                else if (arLabel[0].Text == arLabel[6].Text && arLabel[3].Text == "")
                    arLabel[3].Text = "o".ToString();
                else if (arLabel[6].Text == arLabel[3].Text && arLabel[0].Text == "")
                    arLabel[0].Text = "o".ToString();


//------------------------------------------------------------------------------------------------------------------------------------

                else if (arLabel[1].Text == arLabel[4].Text && arLabel[7].Text == "")
                    arLabel[7].Text = "o".ToString();
                else if (arLabel[1].Text == arLabel[7].Text && arLabel[4].Text == "")
                    arLabel[4].Text = "o".ToString();
                else if (arLabel[7].Text == arLabel[4].Text && arLabel[1].Text == "")
                    arLabel[1].Text = "o".ToString();
//------------------------------------------------------------------------------------------------------------------------------------
                else if (arLabel[2].Text == arLabel[5].Text && arLabel[8].Text == "")
                    arLabel[8].Text = "o".ToString();
                else if (arLabel[8].Text == arLabel[5].Text && arLabel[2].Text == "")
                    arLabel[2].Text = "o".ToString();
                else if (arLabel[2].Text == arLabel[8].Text && arLabel[5].Text == "")
                    arLabel[5].Text = "o".ToString();
                //------------------------------------------------------------------------------------------------------------------------------------
                else if (arLabel[0].Text == arLabel[4].Text && arLabel[8].Text == "")
                    arLabel[8].Text = "o".ToString();
                else if (arLabel[0].Text == arLabel[8].Text && arLabel[4].Text == "")
                    arLabel[4].Text = "o".ToString();
                else if (arLabel[8].Text == arLabel[4].Text && arLabel[0].Text == "")
                    arLabel[0].Text = "o".ToString();
                //------------------------------------------------------------------------------------------------------------------------------------
                else if (arLabel[2].Text == arLabel[4].Text && arLabel[6].Text == "")
                    arLabel[6].Text = "o".ToString();
                else if (arLabel[2].Text == arLabel[6].Text && arLabel[4].Text == "")
                    arLabel[4].Text = "o".ToString();
                else if (arLabel[4].Text == arLabel[6].Text && arLabel[2].Text == "")
                    arLabel[2].Text = "o".ToString();
                //------------------------------------------------------------------------------------------------------------------------------------
                else 
                    for (int i = 0; i < 9; i++)
                    {
                        if (arLabel[8].Text == "")
                        {
                            arLabel[8].Text = "o".ToString();
                            break;
                        }
                        else if (arLabel[7].Text == "")
                        {
                            arLabel[7].Text = "o".ToString();
                            break;
                        }
                        else if (arLabel[6].Text == "")
                        {
                            arLabel[6].Text = "o".ToString();
                            break;
                        }

 //------------------------------------------------------------------------------------------------------------------------------------
                        else if (arLabel[i].Text == "")
                        {
                            this.arLabel[i].ForeColor = System.Drawing.Color.Red;
                            arLabel[i].Text = "o";
                            break;
                        }

                    }

            }
            temp = 0;
            help = 1;
            f3();



        }










        private void f1()
        {
            this.arLabel = new Label[9];
            int b = 400;
            int c = 40;
            for (int i = 0; i < arLabel.Length; i++)
            {
                if (i == 3 || i == 6)
                {
                    c = c + 200;
                    b =400;
                }
                this.arLabel[i] = new Label();
                this.arLabel[i].Location = new System.Drawing.Point(b, c);
                this.arLabel[i].Size = new System.Drawing.Size(200, 200);
                this.arLabel[i].TabIndex = i;
                this.arLabel[i].BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
                this.arLabel[i].Text = "".ToString();
               arLabel[i].Click += new System.EventHandler(this.arLabel_Click);
                this.Controls.Add(arLabel[i]);
                this.arLabel[i].Font = new System.Drawing.Font("Modern No. 20", 120.74999F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                this.arLabel[i].ForeColor = System.Drawing.Color.Green;
                arLabel[i].Visible = true;
                this.arLabel[i].BackColor = System.Drawing.Color.Khaki;
                this.arLabel[i].BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
                b = b + 200;
            }
        }
        private void f3()
        {
            if (arLabel[0].Text == arLabel[1].Text && arLabel[2].Text == arLabel[1].Text && arLabel[1].Text != "".ToString())
            {
                temp = 0;
                f2();
            }
            if (arLabel[3].Text == arLabel[4].Text && arLabel[3].Text == arLabel[5].Text && arLabel[3].Text != "".ToString())
            {
                temp = 0;
                f2();
            }
            if (arLabel[6].Text == arLabel[7].Text && arLabel[8].Text == arLabel[6].Text && arLabel[6].Text != "".ToString())
            {
                temp = 0;
                f2();
            }
            // if (arLabel[0].Text == arLabel[3].Text && arLabel[0].Text == arLabel[6].Text && arLabel[6].Text != "".ToString())
            // f2();
            if (arLabel[0].Text == arLabel[3].Text && arLabel[0].Text == arLabel[6].Text && arLabel[6].Text != "".ToString())
            {
                f2();
                temp = 0;
            }
            if (arLabel[1].Text == arLabel[4].Text && arLabel[4].Text == arLabel[7].Text && arLabel[7].Text != "".ToString())
            {
                temp = 0;
                f2();
            }
            if (arLabel[2].Text == arLabel[5].Text && arLabel[8].Text == arLabel[2].Text && arLabel[2].Text != "".ToString())
            {
                temp = 0;
                f2();
            }
            if (arLabel[0].Text == arLabel[4].Text && arLabel[4].Text == arLabel[8].Text && arLabel[8].Text != "".ToString())
            {
                temp = 0;
                f2();
            }
            if (arLabel[2].Text == arLabel[4].Text && arLabel[6].Text == arLabel[4].Text && arLabel[4].Text != "".ToString())
            {
                temp = 0;
                f2();
            }
        }
        private void f2()
        {
            if (help == 1)
            {

                r++;
               // label4.Text = r.ToString();
                MessageBox.Show("THE is o");
                f6();
            }
            else
            {

                b++;

              //  label5.Text = b.ToString();
                MessageBox.Show("THE is x");
            }


            for (int i = 0; i < arLabel.Length; i++)

                arLabel[i].Text = "".ToString();
            f6();
        }
        private void f6()
        {
            Random number = new Random();
            a = number.Next(0, 8);
            this.arLabel[a].ForeColor = System.Drawing.Color.Green;
            arLabel[a].Text = "o".ToString();

            s.PlaySync();

        }
    }


}
© www.soinside.com 2019 - 2024. All rights reserved.