你能告诉我如何将动画gif添加到c#中的按钮。只需将gif添加到资源并设置为按钮图像不能很好地工作(下一帧比以前的帧更多)。问题似乎在于c#如何处理透明度,但我不知道如何解决它。
提前致谢。
---编辑---
玩gif后问题是gif的透明度。下一帧被绘制在前一帧上,因此我想在动画中间变得透明的元素没有正确地执行它们(它们仍然具有前一帧的颜色)。解决方案是在下一帧上创建白色区域以覆盖前一个区域。白色是我的透明色,所以一切看起来都很好:))
我希望有人会认为它很有用。 快乐编程:)
答案 0 :(得分:2)
为此,您需要执行以下操作:
将BackGroundImageLayout属性设置为Center。默认情况下,此属性设置为Tile。
将按钮的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)
给大家留言。如果在.Image属性上使用,则Gif动画将自动播放,但不会在.BackGround图像上使用。以防有人试图这样做。
答案 2 :(得分:1)
我已经开始工作了。
2件事中有1件对我有用:
我已经将gif添加属性添加到每个框架以自行绘制。
我已经改变了VS的版本(我使用的是免费的专业学生版,现在我 m使用MSDN订阅中的一个)
感谢投入的人。它引导我得出结论,VS本身可能有问题而不是我的编程风格:)
答案 3 :(得分: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();
}
}
}