C# 用户控件的图形文本
我创建了一个自定义用户控件来使用形状制作按钮。我设法做到了,但我添加了一个属性,这样它就可以在形状上显示文本,但它没有显示文本。为什么不显示文本C# 用户控件的图形文本,c#,winforms,user-controls,gdi+,shapes,C#,Winforms,User Controls,Gdi+,Shapes,我创建了一个自定义用户控件来使用形状制作按钮。我设法做到了,但我添加了一个属性,这样它就可以在形状上显示文本,但它没有显示文本。为什么不显示文本 您只在OnPaint实现中绘制奇怪的多边形,不渲染任何文本 添加渲染文本的代码(即使用绘制后多边形: class starbutton : UserControl { [Bindable(true)] [EditorBrowsable(EditorBrowsableState.Always)] [Browsable(false)
您只在
OnPaint
实现中绘制奇怪的多边形,不渲染任何文本
添加渲染文本的代码(即使用绘制后多边形:
class starbutton : UserControl
{
[Bindable(true)]
[EditorBrowsable(EditorBrowsableState.Always)]
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public override string Text { get { return base.Text; } set { base.Text = value; this.Invalidate(); } }
protected override void OnPaint(PaintEventArgs e)
{
Graphics graphics = e.Graphics;
SolidBrush brush2 = new SolidBrush(Color.Green);
Point[] points =
{
new Point(ClientSize.Width / 2, 0),
new Point(0, ClientSize.Height/4),
new Point(0, ClientSize.Height),
new Point(ClientSize.Width, ClientSize.Height)
};
graphics.FillPolygon(brush2, points);
base.OnPaint(e);
}
}
创建成形控件的另一个想法是成形其区域 我使用以下规范创建了此控件:
- 继承自
(我看到您将其命名为按钮
,因此我实现了它继承自开始按钮
,如果您只想拥有按钮
,您可以继承自标签)文本
- 具有自动渲染的
其他内容文本
- 具有
属性,因此其文本可以像其他控件文本一样以标准对齐方式绘制TextAlign
- 绿色多边形以外的区域不再属于控件,单击该区域不受控件控制
- 绿色多边形以外的区域非常透明,可以看到该区域后面的所有内容
- 关于区域的设计时行为与运行时相同
TextRenderer.DrawText(e.Graphics, Text , this.Font,
new Point(10, 10), SystemColors.ControlText);
屏幕截图:
TextRenderer.DrawText(e.Graphics, Text , this.Font,
new Point(10, 10), SystemColors.ControlText);
你从来没有画过文本。当你重写
OnPaint
时,你负责画所有的东西。我如何在上面画文本?@DeaDViruS除了Alexei的好答案外,我还把我的答案作为一个选项发布。如果你仔细看一下并发现它有帮助,我会很高兴的。谢谢你,这同样有效:),这正是我以前想做的。你能做一个星星形状吗?没那么难,也许需要一些数学知识,我想我能。如果可能的话,还可以做一个圆,因为我试过了,但我得到了一个奇怪的形状。@DeaDViruS没那么难,要画一个圆,你需要使用drawerlipse
的Graphics
方法,对于星形,你需要像以前那样FillPolygon
,但是星形有点棘手。