关于如何在组合框中绘制图像有很多已经回答的问题和示例。但我还没有找到任何如何在组合框中绘制动画的示例。
我使用的 gif 动画是(它是透明的):
我想要达到的结果是这样的:
我正在使用 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;
但结果我得到了这个:
它是动画的,但是图片框是在 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;
谢谢你们!你帮了我很多!