2010-02-25 6 views
2

Я пытаюсь нарисовать круг с использованием Windows Form во время выполнения внутри элемента управления меткой. Я пытаюсь отобразить зеленый или красный круг и отображать текст («L1» или «L2») поверх него. Не могли бы вы помочь.Рисовать круг внутри метки

ответ

2

Прежде всего, необходимо SetStyle в конструкторе, так что вы можете контролировать краску

this.SetStyle(
       ControlStyles.UserPaint 
       | ControlStyles.AllPaintingInWmPaint 
       | ControlStyles.SupportsTransparentBackColor 
       , true); 

Тогда вы ответственны за покраску всей этикетки, включая фон и текст. Override OnPaint

protected override void OnPaint(PaintEventArgs e) { 
    Graphics g = e.Graphics; 
    Brush b = new SolidBrush(this.ForeColor); 
    SizeF sf = g.MeasureString(this.Text, this.Font); 

    Padding p = Padding.Add(this.Padding, this.Margin); 

    // do not forget to include the offset for you circle and text in the x, y position 
    float x = p.Left; 
    float y = p.Top; 

    g.DrawString( this.Text, this.Font, b, x, y); 
} 

После того, как вы должны сделать текст метки, а затем использовать g.DrawEllipse нарисовать круг, который вы хотите и где вы хотите. Затем используйте g.DrawString для размещения над ним текста.

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

+0

Спасибо. Что такое «TextAlign»? – nav100

+0

TextAlign - это ContentAlignment строки. Он сообщает вам, что строка строки внутри меток ограничена – JDMX

+0

Спасибо за помощь. Я ценю. Я добавил элемент управления ярлыком в форму и переопределит onpaint. Я получаю xAlign и TextAlign не существует в текущем контексте сообщения. Что мне здесь не хватает? – nav100

0

Если у вас есть ресурс Image, вы можете установить свойство Image на ярлыке, а затем установить свойства выравнивания текста и выравнивания изображения, чтобы они упали туда, где вы хотите.

+0

спасибо. У меня нет изображения ресурса. Возможно ли использование объекта Graphics? – nav100

0

Полностью согласен с Ником. Имейте 4 изображения с различной комбинацией и динамически показывайте их.

Надеюсь, это поможет.

Спасибо, Раджа

1

Чтобы сделать это программно вы можете использовать метод Label CreateGraphics, чтобы получить Graphics. Затем вы можете использовать методы DrawElipse и DrawString для создания нужного изображения.

Смежные вопросы