1

我创建了一个自定义控件(该控件用于拖放),我想将焦点和选定事件添加到控件。两者都需要在视觉上不同。所以我计划为这两个事件实现一个窗口样式。为了获得焦点,我使用 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);

这可以填充矩形,但是我只想突出显示图像本身而不是整个矩形。我有使用两个不同图像的想法,但是图像是提供给我的,我没有存储它们。

所以我的问题是:如何获得具有焦点突出显示的控件图像的最佳方法是什么?

先感谢您!

4

1 回答 1

1

由于您的图像不透明,您可以用透明的高亮颜色覆盖它。类似的东西

于 2013-07-24T22:27:05.367 回答