急求问题,绘图

xsff1024 2009-09-27 05:09:27
我用下面的代码在picturebox里画了一个表格,为什么不显示?
protected override void OnPaint(PaintEventArgs e)//picturebox的onPanit事件
{
Image img = new Bitmap(1320, 1000);
Graphics gra = Graphics.FromImage(img);
Pen pen = new Pen(Color.Red, 4);
gra.DrawRectangle(pen, 10, 10, 875, 810);
Pen pen2 = new Pen(Color.Red, 2);
gra.DrawLine(pen2, new Point(60, 10), new Point(60, 820));
pen2.Dispose();
for (int i = 0; i < 32; i++)
{
gra.DrawLine(Pens.Red, new Point(60 + 25 * (i + 1), 10), new Point(60 + 25 * (i + 1), 820));
}
for (int i = 0; i < 20; i++)
{
gra.DrawLine(Pens.Red, new Point(10, 25 * (i + 1) + 10), new Point(885, 25 * (i + 1) + 10));
}
pen.Dispose();
pen = new Pen(Color.Blue, 4);
gra.DrawRectangle(pen, 890, 10, 400, 810);
for (int i = 0; i < 16; i++)
{
gra.DrawLine(Pens.Blue, new Point(890 + 25 * (i + 1), 10), new Point(890 + 25 * (i + 1), 820));
}
for (int i = 0; i < 20; i++)
{
gra.DrawLine(Pens.Blue, new Point(890, 25 * (i + 1) + 10), new Point(1290, 25 * (i + 1) + 10));
}
Graphics graf = e.Graphics;
graf.DrawImage(img, new Point(0, 0));
img.Dispose();
pen.Dispose();
gra.Dispose();
graf.Dispose();
}
...全文
72 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
morecash 2009-09-27
  • 打赏
  • 举报
回复
graf.Dispose(); 释放的位置可能部队
特别 2009-09-27
  • 打赏
  • 举报
回复
另外,你可以直接使用e.Graphics进行绘图,没必要先生成Image
下面是整理一下的代码


Graphics gra = e.Graphics;
Pen pen = new Pen( Color.Red, 4 );
gra.DrawRectangle( pen, 10, 10, 875, 810 );
pen = new Pen( Color.Red, 2 );
gra.DrawLine( pen, new Point( 60, 10 ), new Point( 60, 820 ) );
//pen2.Dispose();
for ( int i = 0; i < 32; i++ )
{
gra.DrawLine( Pens.Red, new Point( 60 + 25 * ( i + 1 ), 10 ), new Point( 60 + 25 * ( i + 1 ), 820 ) );
}
for ( int i = 0; i < 20; i++ )
{
gra.DrawLine( Pens.Red, new Point( 10, 25 * ( i + 1 ) + 10 ), new Point( 885, 25 * ( i + 1 ) + 10 ) );
}
//pen.Dispose();
pen = new Pen( Color.Blue, 4 );
gra.DrawRectangle( pen, 890, 10, 400, 810 );
for ( int i = 0; i < 16; i++ )
{
gra.DrawLine( Pens.Blue, new Point( 890 + 25 * ( i + 1 ), 10 ), new Point( 890 + 25 * ( i + 1 ), 820 ) );
}
for ( int i = 0; i < 20; i++ )
{
gra.DrawLine( Pens.Blue, new Point( 890, 25 * ( i + 1 ) + 10 ), new Point( 1290, 25 * ( i + 1 ) + 10 ) );
}
//Graphics graf = e.Graphics;
//graf.DrawImage( img, new Point( 0, 0 ) );
//img.Dispose();
//pen.Dispose();
//gra.Dispose();
//graf.Dispose();
特别 2009-09-27
  • 打赏
  • 举报
回复
最后一行 graf.Dispose(); 去掉
这是PictureBox的绘图面,你把它给销毁了,还咋给你绘图啊
z415353144 2009-09-27
  • 打赏
  • 举报
回复
没有这么用过,我一般是把图片画好后,然后用picturebox.image=image做的
xsff1024 2009-09-27
  • 打赏
  • 举报
回复
是给的picturebox啊,我用picturebox1.createGraphics()也不行
flyerwing 2009-09-27
  • 打赏
  • 举报
回复
你把画的图给PICTUREBOX不就好了!
xsff1024 2009-09-27
  • 打赏
  • 举报
回复
自己顶一下

110,537

社区成员

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

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

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