Pen p = new Pen(Color.Red, 1);
Point p1=...;
Point p2=...;
Graphics gr;
gr.DrawLine(p,p1,p2);为什么总提示:使用了未赋值的局部变量“gr”
我用了gr=this.CreateGraphics(); 但会要求创建: private Graphics CreateGraphics()
{
throw new Exception("The method or operation is not implemented.");
}
难道因为我重写了redraw? 我现在就想画这个线,怎么画?
Point p1=...;
Point p2=...;
Graphics gr;
gr.DrawLine(p,p1,p2);为什么总提示:使用了未赋值的局部变量“gr”
我用了gr=this.CreateGraphics(); 但会要求创建: private Graphics CreateGraphics()
{
throw new Exception("The method or operation is not implemented.");
}
难道因为我重写了redraw? 我现在就想画这个线,怎么画?
解决方案 »
- C# 如何调用DataGridViewCellValidatingEventArgs事件,并传入参数
- 求把任何类型文档转换为byte[]对象的方法
- 【讨论一下】用C#做数值计算速度怎么样
- 如何把这样的数据存放到SQLsever一个字段
- Calendar控件的问题
- 如何调用CODEDOM生成的动态类
- 在线等,急~!谁能给我点参考,.net 邮件系统的代码,谢谢
- C#能不能读取PSD图片?
- 如何检查girdview中某一列是否存在啊,即contain函数的参数是什么,即boundfield的标识是什么?
- 怎么用C# post 登陆http://my.37.com/login.html 这个网站
- datagridview的单元格中能否输入回车符,进行换行?
- WINAPI相关问题
gr.DrawLine(p,p1,p2);
这样就可以啊,我都试过的
就是调用CreateGraphics()创建Graphics 画
Point p1=...;
Point p2=...;
Graphics gr=this.CreateGraphics();
gr.DrawLine(p,p1,p2);
这样就不就可以了
可以使用Graphics.FromHwnd,Graphics.FromHdc,Graphics.FromImage方法创建Graphics对象,然后绘制
用了:gr=this.CreateGraphics();
会要求我重写: private Graphics CreateGraphics()这就是不是系统里自带那个函数了...这个线我就没画出来
Graphics gr;
gr.DrawLine(p,p1,p2); //为什么总提示:使用了未赋值的局部变量“gr” //因为你没有创建对象graphics实例对象,加上gr=this.CreateGraphics();肯定没有问题
你的代码中:
Pen p = new Pen(Color.Red, 1);
Point p1=...;
Point p2=...;
Graphics gr;
gr.DrawLine(p,p1,p2); gr对象是未经初始化的,所以系统编译会提示那个错误。要解决这个编译错误很简单:
Graphics gr = null;
但很显然这并不是你的本意,很有可能你是要在某个窗口上绘制,或者在某个自己的内存中Grphics,因此问题的关键是解决这个Graphics对象的值的问题。
可能的做法是:
一、直接从某个窗口得到(this是窗口)
Graphics g =this.CreateGraphics();
g.Dispose()
二、从某个Graphics对象得到一个复制品(做双缓冲用之类的)
BufferedGraphicsContext currentContext = BufferedGraphicsManager.Current;
BufferedGraphics bgr = currentContext.Allocate(SomeGraphics, SomeClipRectangle);
Graphics gr= bgr.Graphics;
这样就得到一个以SomeGraphics以基准和一个绘制对象了。
另外你使用这个方法的上下文环境可能提供了这样的参数,比如在OnPaint方法调用此函数时,OnPait带Graphics参数。具体的Graphics对象的获取可参考一下这里:
http://blog.programfan.com/article.asp?id=17249
gr是你要画图的落笔点,现在你没有定义,所以报错.
比如你要画在窗体上,还是某个bmp上,或者别的应用程序上,或者桌面上等等,你必须指定一个地方.(返回一个句柄)
{
public void Draw(Graphics g)
{
Pen pen = new Pen(Color, PenWidth); g.DrawLine(pen, startPoint.X, startPoint.Y, endPoint.X, endPoint.Y); pen.Dispose();
}
}窗体:
Graphics gr=this.CreateGraphics();
new DrawLine().Draw(gr);
IntPtr i = f2.Handle;
Graphics g = Graphics.FromHwnd(i);
Pen p = new Pen(Color.Red, 1);
Point p1=...;
Point p2=...;
g.DrawLine(p,p1,p2);
另外,你可以到codeproject上搜索一下DrawTools,这个例子就是将绘图集成到一个控件中
你的代码中:
Pen p = new Pen(Color.Red, 1);
Point p1=...;
Point p2=...;
Graphics gr;
gr.DrawLine(p,p1,p2); gr对象是未经初始化的,所以系统编译会提示那个错误。要解决这个编译错误很简单:
Graphics gr = null;
但很显然这并不是你的本意,很有可能你是要在某个窗口上绘制,或者在某个自己的内存中Grphics,因此问题的关键是解决这个Graphics对象的值的问题。
可能的做法是:
一、直接从某个窗口得到(this是窗口)
Graphics g =this.CreateGraphics();
g.Dispose()
二、从某个Graphics对象得到一个复制品(做双缓冲用之类的)
BufferedGraphicsContext currentContext = BufferedGraphicsManager.Current;
BufferedGraphics bgr = currentContext.Allocate(SomeGraphics, SomeClipRectangle);
Graphics gr= bgr.Graphics;
这样就得到一个以SomeGraphics以基准和一个绘制对象了。
另外你使用这个方法的上下文环境可能提供了这样的参数,比如在OnPaint方法调用此函数时,OnPait带Graphics参数。 具体的Graphics对象的获取可参考一下这里:
http://blog.programfan.com/article.asp?id=17249
private void button4_Click(object sender, EventArgs e)
{
Class1 ab=new Class1();
ab.a();
}Class: public class Class1
{
public void a()
{
Graphics gr;
Pen myPen = new Pen(Color.Red, 2);
Form1 s = new Form1();
gr = Graphics.FromHwnd(s.Handle);
gr.DrawLine(myPen, 30, 60, 150, 60); }
}画不出来...
如果在Class里面
Form1 f2 = new Form1();
f2.Show();
f2.g = f2.CreateGraphics();
f2.g.DrawLine(new Pen(Color.Red), 100, 5, 10, 100);
Form2 f2 = new Form2();
f2.Show();
f2.CreateGraphics().DrawLine(new Pen(Color.Red), 100, 5, 10, 100);
你自己定义个类。类里有p1,p2两个point,要是愿意把pen也加进去。最后把这个对象作为结果返回回来,你就可以根据这个类里的属性画点了。你在你的form里是可以得到这个Graphics的。
Graphics gr = null;
但很显然这并不是你的本意,很有可能你是要在某个窗口上绘制,或者在某个自己的内存中Grphics,因此问题的关键是解决这个Graphics对象的值的问题。
可能的做法是:
一、直接从某个窗口得到(this是窗口)
Graphics g =this.CreateGraphics();
g.Dispose()
二、从某个Graphics对象得到一个复制品(做双缓冲用之类的)
BufferedGraphicsContext currentContext = BufferedGraphicsManager.Current;
BufferedGraphics bgr = currentContext.Allocate(SomeGraphics, SomeClipRectangle);
Graphics gr= bgr.Graphics;
这样就得到一个以SomeGraphics以基准和一个绘制对象了。
另外你使用这个方法的上下文环境可能提供了这样的参数,比如在OnPaint方法调用此函数时,OnPait带Graphics参数。具体的Graphics对象的获取可参考一下这里:
http://blog.programfan.com/article.asp?id=17249