【问题标题】:Draw text on a Panel在面板上绘制文本
【发布时间】:2012-11-04 08:22:44
【问题描述】:

好的,我解决了所有问题,现在正是我想要的。 我有一个textBox1panel1drawTexta(一个按钮)。

当我单击按钮并在面板中选择一个点时,我想从textBox1 中绘制字符串。

private void panel1_Paint(object sender, PaintEventArgs e)
{
    using (SolidBrush br = new SolidBrush(Color.Red))
    {
        StringFormat sf = new StringFormat();
        sf.FormatFlags = StringFormatFlags.DirectionRightToLeft;
        e.Graphics.DrawString(textBox1.Text, this.Font, br, point1, sf);
    }
}

private void panel1_MouseDown(object sender, MouseEventArgs e)
{
    point1 = new Point(e.X, e.Y);
} 

bool flag = false;
Point point1 = new Point();

private void drawTexta_Click(object sender, EventArgs e)
{ 
    flag = true;
    panel1.Refresh();
}

【问题讨论】:

  • 使用文本框,然后只在画布上绘制文本不是更容易吗?
  • 我唯一知道的是SolidBrush会发生内存泄漏。
  • @AlvinWong .net 处理垃圾收集。但是,使用 using 仍然是一个好习惯。
  • @Yatrix 否,GDI+ 资源 需要 正确处理(例如将其放入 using 块中),因为它们不是 GC-ed。 dotnetfacts.blogspot.com/2008/03/things-you-must-dispose.html
  • @GolezTrol 你能给我更多关于添加文本框的信息吗? OnMouseDown 创建一个文本框或?我也添加了使用

标签: c# winforms text panel onpaint


【解决方案1】:

文本没有被绘制到panel1,因为您需要刷新它。

在将drawText 设置为true 之后,将此代码添加到button1_Click

panel1.Refresh();

这将使静态文本显示出来。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-15
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
相关资源
最近更新 更多