DrawString的问题,绘制后没法恢复,大虾指点!
taber 2003-08-14 04:27:56 在Panel上点击,每次都会生成一个文本。
问题是,当Panel所在窗体重绘时(例如最小化后再最大化),这些text也不见了,
有什么办法可以使这些已经绘制的文本也可以保存下来呢?
private void panel1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
FontFamily fontFamily = new FontFamily(GenericFontFamilies.SansSerif);
Font font = new Font(fontFamily, 10);
SolidBrush sb = new SolidBrush(Color.Blue);
Graphics g = this.panel1.CreateGraphics();
string text = "programmer is great";
SizeF sf = g.MeasureString(text, font);
int width = Convert.ToInt32(sf.Width);
int height = Convert.ToInt32(sf.Height)
;
// Rectangle rect = new Rectangle(e.X, e.Y, width, height);
Rectangle rect = new Rectangle(new Point(e.X, e.Y), sf.ToSize());
g.FillRectangle(new SolidBrush(Color.Azure), rect);
g.DrawString(text, font, sb, rect);
g.DrawLine(new Pen(Color.Brown), e.X, e.Y, e.X + width , e.Y);
}