2012-11-04 64 views
1

好的,我修复了一切,现在正是我想要的。 我有一个textBox1,panel1drawTexta(一个按钮)。在面板上绘制文本

当我点击按钮并在面板中选择一个点时,我想从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(); 
} 
+0

使用文本框并仅在画布上绘制文本会更容易吗? – GolezTrol

+0

我唯一知道的就是'SolidBrush'会出现内存泄漏。 –

+0

@AlvinWong .net处理垃圾收集。但是,使用使用仍然是一个好习惯。 – Yatrix

回答

2

由于您需要刷新文本,因此文本没有被绘制到panel1

将此代码添加到button1_Click,设置后drawTexttrue

panel1.Refresh(); 

这将使静态文本显示。

+1

我刚刚得知'Refresh'是'Invalidate'和'Update'的组合。 http://blogs.msdn.com/b/subhagpo/archive/2005/02/22/378098.aspx –