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);
}
...全文
90 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zx_wang 2003-08-15
  • 打赏
  • 举报
回复
用对象集合将所有的对象保留下来
sybsyb 2003-08-15
  • 打赏
  • 举报
回复
在窗口的OnPaint事件里绘制(每次更新时都会调用),
不要放在其他地方(其他地方只会画一边).
taber 2003-08-15
  • 打赏
  • 举报
回复
自己踢一脚
taber 2003-08-14
  • 打赏
  • 举报
回复
晕,可以详细点么?
我绘制了文本,但没地方保存它们,怎样一一恢复呢?
zx_wang 2003-08-14
  • 打赏
  • 举报
回复
重写一下OnPaint
taber 2003-08-14
  • 打赏
  • 举报
回复
我想恢复这些已绘制的文本,具体怎么操作呢?请教......
Lovest 2003-08-14
  • 打赏
  • 举报
回复
重写一下OnPaint

110,569

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧