Выделите выбранный пользовательский элемент управления с C # WinForms - PullRequest
0 голосов
/ 28 мая 2009

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

Это работает, заполняя прямоугольник, однако я хотел бы просто выделить само изображение вместо всего прямоугольника. У меня была идея использовать два разных изображения, однако изображение предоставляется мне, и я не храню их.

Итак, мой вопрос: как лучше всего получить только изображение элемента управления, на котором выделен фокус?

Заранее спасибо!

1 Ответ

1 голос
/ 25 июля 2013

, так как ваше изображение не прозрачное, вы можете наложить его на прозрачный цвет подсветки. что-то похожее на это .

...