我对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(); }
向下面这样写就一切正常,如果将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(); }
解决方案 »
- C#写一个winfrom程序,利用一个button事件来将两个本地SQLSER2008数据库连起来,把一个数据库中的某些表数据更新到另一个数据库表中,表结构不同
- soundplayer播放memorystream里的内容出现 波形头已损坏
- C# 操作excel
- 怎样在窗体之间传递数据啊!急!!!!
- 如何熟悉.NET Framework之中定义的上千个classes???
- 初学.net 请教 怎样使用 repeater或者gridview编辑查询得到的数据
- C# 屏幕监控问题
- 高分求软件100 分TierDeveloper .NET Enterprise Edition 3.0
- 在做注册时,检查用户名是否存在 ?如何写,关键代码
- 用C#如何查找任务管理里的进程?有源代码嘛?
- 如何使用asp.net给word文档添加水印
- DataGridView中DataGridViewComboBoxColumn如何绑定不同数据源?
而 PictureBox.CreateGraphics() 则不与当前控件关联
可是,绘图是在PictureBox控件上的呀,触发该事件的控件,不就是PictureBox么???
PictureBox.CreateGraphics()是将要在PictureBox上绘制图形所要用到的句柄
反之。你可以
Graphics g = Graphics.FromImage(PictureBox1.Image);
GDI+。。
建议在panel上绘制。