【发布时间】:2012-11-04 08:22:44
【问题描述】:
好的,我解决了所有问题,现在正是我想要的。
我有一个textBox1、panel1 和drawTexta(一个按钮)。
当我单击按钮并在面板中选择一个点时,我想从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