PictureBox.CreateGraphics()和e.Graphics;的区别

lgw26046044 2010-10-11 04:29:20
我对C#并不太熟悉,只是知道一些基础,原来我一直认为PictureBox.CreateGraphics()和e.Graphics;都是获得了Graphics对象没什么区别,但是 我前一阵子遇到了这样一个问题:
向下面这样写就一切正常,如果将g=e.Graphics;改成pictureBox.CreateGraphics()就不好使了(pictureBox是一个已定义的控件)
private void pictureBox_Paint(object sender, PaintEventArgs e)
{

Graphics g;
g = e.Graphics;

\\g=pictureBox.CreateGraphics();

Pen myPen = Pens.Blue;
for (int i = 0; i < pictureBox.ClientRectangle.Width; i++)
{
g.DrawLine(myPen, new Point(i, 0), new Point(i, pictureBox.ClientRectangle.Bottom));
i += 10;
}

for (int j = 0; j < pictureBox.ClientRectangle.Height; j++)
{
g.DrawLine(myPen, new Point(0, j), new Point(pictureBox.ClientRectangle.Right, j));
j += 10;
}
g.Dispose();

}
...全文
761 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zerodegrees 2010-10-14
  • 打赏
  • 举报
回复
画图应该尽量在picturebox上画,这样不容易乱。思路清晰
兔子-顾问 2010-10-14
  • 打赏
  • 举报
回复
如果打算自己绘图,你可以考虑用Panel。
反之。你可以
Graphics g = Graphics.FromImage(PictureBox1.Image);
铛铛 2010-10-14
  • 打赏
  • 举报
回复
private void pictureBox_Paint(object sender, PaintEventArgs e)

个人认为e应该绘制这个pictureBox的图形句柄


PictureBox.CreateGraphics()是将要在PictureBox上绘制图形所要用到的句柄
lgw26046044 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 heddaz 的回复:]
e.Graphics 获得的是触发这个事件的控件的图形句柄,来自参数
而 PictureBox.CreateGraphics() 则不与当前控件关联
[/Quote]

可是,绘图是在PictureBox控件上的呀,触发该事件的控件,不就是PictureBox么???
oeasypeasy 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zxp8819 的回复:]
private void pictureBox_Paint(object sender, PaintEventArgs e)
个人认为e应该绘制这个pictureBox的图形句柄
PictureBox.CreateGraphics()是将要在PictureBox上绘制图形所要用到的句柄
[/Quote]
[Quote=引用 4 楼 wuyazhe 的回复:]
如果打算自己绘图,你可以考虑用Panel。
反之。你可以
Graphics g = Graphics.FromImage(PictureBox1.Image);
[/Quote]

GDI+。。
建议在panel上绘制。
大飞飞虫 2010-10-11
  • 打赏
  • 举报
回复
e.Graphics 获得的是触发这个事件的控件的图形句柄,来自参数
而 PictureBox.CreateGraphics() 则不与当前控件关联

111,092

社区成员

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

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

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