请教关于GDI+画图问题(在线等解答)

llpdev 2003-10-20 04:45:01
我用如下语句在窗口上画一个矩形,但当我把屏幕最小化后又复原,矩形不见了,这问题该如何解决?哪位大哥教教我

Graphics _graphics;
_graphics = Graphics.FromHwnd(this.Handle);
_graphics.DrawRectangle(Pens.Blue,290, 290, 22, 22);
...全文
25 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wideroad 2003-10-20
  • 打赏
  • 举报
回复
那你首先得懂onpaint事件是什么时候调用的,它并不是一直在不不停的调用,而是当他的一部分被其他窗体覆盖,或者向你刚才说的最小化后又恢复等等这种类型的情况她才被调用,你可以自己写方法实现你上边说的功能,但你必须考虑当窗体的一部分先被覆盖后又显示这种情况。
Kain 2003-10-20
  • 打赏
  • 举报
回复
void DrawMap()
{
bitmap bmp=new bitamp(this.width,this.height);
Graphics g=CreeatGraphics.FromImage(bmp);
g.DrawRectangle(Pens.Blue,290, 290, 22, 22);
this.backGroud =bmp;
}
llpdev 2003-10-20
  • 打赏
  • 举报
回复
而且,我还要在每个矩形里写上不同的文字
llpdev 2003-10-20
  • 打赏
  • 举报
回复
我需要在窗口画很多矩形,还要实现当鼠标单击某个矩形时,该矩形的填充色会改变。
llpdev 2003-10-20
  • 打赏
  • 举报
回复
出了把画图代码放在OnPaint里,还有其他方法么?
foncy 2003-10-20
  • 打赏
  • 举报
回复
把重画处理程序写有Form 的OnPaint中
wideroad 2003-10-20
  • 打赏
  • 举报
回复
它上面的代码对你来说就是这样:
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g=e.Graphics;
g.DrawRectangle(Pens.Blue,290, 290, 22, 22);
}
你要说动态读取的话,那就把检索数据代码放在这个事件里面,在这个事件里面写不也是动态读取吗?
llpdev 2003-10-20
  • 打赏
  • 举报
回复
我要的是在自己的方法里画个矩形啊,你的我看不太懂,这样有和作用?
我的矩形的大小位置是存在数据库里的,是检索数据后,然后动态画的。
wideroad 2003-10-20
  • 打赏
  • 举报
回复
因为当最小化后又复原,系统要自动调用一个重画事件,你的画图代码没有写在这个事件里面所以复员后就没有了。这个事件好象叫ondraw,具体我也忘了,你在msdn上查一查。
shibill 2003-10-20
  • 打赏
  • 举报
回复
在Form1的Paint事件中添加:
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g=e.Graphics;
g.FillRectangle(Brushes.White,this.ClientRectangle);

g.TextRenderingHint=TextRenderingHint.AntiAlias;

//输出文字
g.DrawString("10",new Font("arial",18,FontStyle.Bold),Brushes.DarkBlue,new PointF(10,50));
g.DrawString("3",new Font("arial",10,FontStyle.Bold),Brushes.DarkBlue,new PointF(40,47));

g.Dispose();
}

110,534

社区成员

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

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

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