Я создал пользовательский элемент управления (элемент управления используется для перетаскивания), и я хочу добавить фокус и выбранные события в элемент управления. Оба должны быть визуально различимы. Поэтому я планирую реализовать стиль 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);
Это работает, заполняя прямоугольник, однако я хотел бы просто выделить само изображение вместо всего прямоугольника. У меня была идея использовать два разных изображения, однако изображение предоставляется мне, и я не храню их.
Итак, мой вопрос: как лучше всего получить только изображение элемента управления, на котором выделен фокус?
Заранее спасибо!