コンボボックス内で画像を描画する方法については、すでに回答済みの質問と例がたくさんあります。しかし、コンボボックス内でアニメーションを描画する方法の例は見つかりませんでした。
私が使用するgifアニメーションは次のとおりです(透明です):
そして、私が達成したい結果は、次のようなものです。
Windows フォームと .Net 3.5 を使用しています。
私が考えたそれを達成するためのすべての方法は次のとおり
です。 1. ComboBox の DrawItem ハンドラで Graphics.DrawImage を使用します。しかし、画像は静的に描画され、アニメーションはありませんでした。
2. PictureBox を使用してアニメーションを表示し、サイズを変更して ComboBox の上に配置します。
2 番目の解決策として、次のコードを使用しました。
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;
皆さん、ありがとうございました!あなたは私をたくさん助けてくれます!