1

カスタム コントロール (コントロールはドラッグ アンド ドロップに使用されます) を作成し、コントロールにフォーカスと選択したイベントを追加したいと考えています。どちらも視覚的に区別する必要があります。そのため、これらのイベントの両方に 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 つの異なる画像を使用するというアイデアがありましたが、画像は提供されており、保存していません。

だから私の質問:強調表示するフォーカスがあるコントロールの画像だけを取得する最良の方法は?

前もって感謝します!

4

1 に答える 1