カスタム コントロール (コントロールはドラッグ アンド ドロップに使用されます) を作成し、コントロールにフォーカスと選択したイベントを追加したいと考えています。どちらも視覚的に区別する必要があります。そのため、これらのイベントの両方に Windows スタイルを実装する予定です。フォーカスのために、Paint イベントで次のコードを使用して、コントロールの周りに実線と点線を描画します。
if (Image != null)
{
if (ContainsFocus)
{
// Draw a dotted line inside the client rectangle
Rectangle insideRectangle = ClientRectangle;
insideRectangle.Inflate(-2, -2);
insideRectangle.Width--;
insideRectangle.Height--;
Pen p = new Pen(Color.Black, 1);
p.DashStyle = DashStyle.Dot;
g.DrawRectangle(p, insideRectangle);
// Draw a solid line on the edge of the client rectangle
Rectangle outsideRectangle = ClientRectangle;
outsideRectangle.Width--;
outsideRectangle.Height--;
p.DashStyle = DashStyle.Solid;
g.DrawRectangle(p, outsideRectangle);
Color transparentLightBlue = Color.FromArgb(100, Color.LightBlue);
Brush solidBrush = new SolidBrush(transparentLightBlue);
g.FillRectangle(solidBrush, ClientRectangle);
}
}
Focus イベントでは、画像だけを強調表示したい (Windows エクスプローラーと同様)。これに対する私の最初の試みは、次のコードを追加することでした。
Color transparentLightBlue = Color.FromArgb(100, Color.LightBlue);
Brush solidBrush = new SolidBrush(transparentLightBlue);
g.FillRectangle(solidBrush, ClientRectangle);
これは長方形の塗りつぶしに機能しますが、長方形全体ではなく画像自体を強調表示したいと思います。2 つの異なる画像を使用するというアイデアがありましたが、画像は提供されており、保存していません。
だから私の質問:強調表示するフォーカスがあるコントロールの画像だけを取得する最良の方法は?
前もって感謝します!