我创建了一个自定义控件(该控件用于拖放),我想将焦点和选定事件添加到控件。两者都需要在视觉上不同。所以我计划为这两个事件实现一个窗口样式。为了获得焦点,我使用 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);
这可以填充矩形,但是我只想突出显示图像本身而不是整个矩形。我有使用两个不同图像的想法,但是图像是提供给我的,我没有存储它们。
所以我的问题是:如何获得具有焦点突出显示的控件图像的最佳方法是什么?
先感谢您!