c# - 在组合框上绘制动画

标签 c# winforms animation combobox picturebox

关于如何在组合框中绘制图像,有很多已经回答过的问题和示例。但是我还没有找到任何如何在组合框中绘制动画的示例。

我用的gif动画是(透明的):
enter image description here

我想达到的结果是这样的:
enter image description here

我正在使用 Windows 窗体和 .Net 3.5。
我想到了实现这一目标的所有方法:
1. 在 ComboBox 的 DrawItem 处理程序中使用 Graphics.DrawImage。但是图像是静态绘制的,没有动画。
2. 使用 PictureBox 显示动画,然后以某种方式调整它的大小并放置在 ComboBox 上。

对于第二个灵魂,我使用了以下代码:

pictureBox1 = new PictureBox();
pictureBox1.Image = Resource.myImage;
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
//3 is used just for try to fit image into "white" area of ComboBox
pictureBox1.ClientSize = new Size(comboBox1.Size.Height-3, comboBox1.Size.Height-3);
pictureBox1.BackColor = System.Drawing.Color.Transparent;
pictureBox1.Dock = DockStyle.Left;
pictureBox1.Parent = this.comboBox1;
pictureBox1.Enabled = true;
pictureBox1.Visible = true;

但结果我得到了这个:
enter image description here
它是动画的,但是 picturebox 是在 ComboBox 的边缘上绘制的,看起来很糟糕。

那么,任何人都可以给我建议或一些帮助来实现这个目标吗?

谢谢。

编辑:
我最终的解决方案:

pictureBox1 = new PictureBox();
pictureBox1.Image = Resource1.myImage;
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.ClientSize = new Size(comboBox1.Size.Height - SystemInformation.Border3DSize.Height,  comboBox1.Size.Height - (2 * SystemInformation.Border3DSize.Height));
pictureBox1.BackColor = System.Drawing.Color.Transparent;
pictureBox1.Location = new Point(SystemInformation.Border3DSize.Width, SystemInformation.Border3DSize.Height);
pictureBox1.Parent = this.comboBox1;
pictureBox1.Enabled = true;
pictureBox1.Visible = true;

谢谢大家!你帮了我大忙!

最佳答案

试试这个:

            pictureBox1 = new PictureBox();
            pictureBox1.Image = Resource.myImage;
            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            //2 is used just for try to fit image into "white" area of ComboBox
            pictureBox1.ClientSize = new Size(comboBox1.Size.Height - 2, comboBox1.Size.Height - 2);
            pictureBox1.BackColor = System.Drawing.Color.Transparent;
            pictureBox1.Left = 1;
            pictureBox1.Top = 1;
            pictureBox1.Parent = this.comboBox1;
            pictureBox1.Enabled = true;
            pictureBox1.Visible = true;

关于c# - 在组合框上绘制动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11864537/

相关文章:

c# - 如何将列表中的字符串与句子中的单词匹配?

c# - 将我当前的光标位置显示为当前行和当前列?

.net - 任何 GUI 更新(甚至异步)是否总是阻止我的 GUI,例如使用两个相邻的表格?

objective-c - 添加到图层后水平翻转 CCSprite

c# - Azure 应用服务出站请求超时

c# - 我应该在 Reactive Extensions (Rx) Subject<T> 上调用 Dispose

c# - XmlSerializer 在 .NET 3.5 和 CF.NET 3.5 之间有所不同

c# - 在 Windows 窗体上绘制多个自定义矩形控件的最快方法是什么

matlab - 如何以编程方式更新直方图内容和数据提示位置? (MATLAB hg2)

javascript - 如何优化 Canvas 上的动画? HTML 5