C# 在标签内画圆

C# 在标签内画圆,c#,C#,我试图在运行时在label控件内使用Windows窗体绘制一个圆。我试图显示绿色或红色圆圈,并在其上方显示文本('L1'或'L2')。你能帮忙吗 如果您有一个资源图像,您可以在标签上设置图像属性,然后设置文本对齐和图像对齐属性,使其落在您想要的地方。完全同意Nick的观点。有4个不同组合的图像,并动态显示 希望这有帮助 谢谢, Raja首先,您需要在构造函数中设置样式,以便可以控制绘制 this.SetStyle( ControlStyles.UserPain

我试图在运行时在label控件内使用Windows窗体绘制一个圆。我试图显示绿色或红色圆圈,并在其上方显示文本('L1'或'L2')。你能帮忙吗

如果您有一个资源图像,您可以在标签上设置图像属性,然后设置文本对齐和图像对齐属性,使其落在您想要的地方。

完全同意Nick的观点。有4个不同组合的图像,并动态显示

希望这有帮助

谢谢,
Raja

首先,您需要在构造函数中设置样式,以便可以控制绘制

  this.SetStyle(
                ControlStyles.UserPaint
                | ControlStyles.AllPaintingInWmPaint
                | ControlStyles.SupportsTransparentBackColor
                , true );
然后,您负责绘制整个标签,包括背景和文本。覆盖在油漆上

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.Dropellipse绘制所需的圆以及所需的位置。然后使用g.DrawString将文本定位在其上方


请记住,如果必须提供为其设置属性的所有绘图位,则这仅用于符合您将要设置的标准的标签。要以编程方式执行此操作,您可以使用标签的方法来获取属性。然后,您可以使用和方法创建所需的图像。

谢谢。我没有资源映像。可以使用图形对象吗?谢谢。什么是“TextAlign”?TextAlign是字符串的ContentAlign。它告诉您标签中字符串的位置。感谢您的帮助。我很感激。我在表单中添加了一个标签控件,并覆盖onpaint。我正在获取xAlign,当前上下文消息中不存在TextAlign。我在这里遗漏了什么?忽略它,使用编辑过的版本。我从我的自定义标签油漆中复制了它。我没有看到在表单上画任何圆圈。