我需要调用此方法,但我无法在任何命名空间中找到它。
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.creategraphics.aspx
它表示它位于System.Windows.Forms命名空间和System.Windows.Forms.dll中。
我正在使用Visual Studio 2010并将System.Windows.Forms引用导入到项目中。
在顶部我进行了导入(sry,我的Java俚语)using FORMS = System.Windows.Forms;
Graphics g = FORMS.CreateGraphics(); // error
错误是:“名称空间'System.Windows.Forms中不存在类型或命名空间名称'CreateGraphics'(您是否缺少程序集引用?)”
感谢您的帮助。
--- --- EDIT
我正在尝试从这篇文章的最佳答案中运行代码:
GDI+ / C#: How to save an image as EMF?
--- --- EDIT
根据用户的建议,我正在尝试:
Graphics g = new Graphics();
FORMS.Control a = new FORMS.Control();
g = a.CreateGraphics();
--- --- EDIT
没关系,对不起,我是傻瓜。会在一秒钟内接受。答案 0 :(得分:4)
此:
using FORMS = System.Windows.Forms;
是名称空间别名,而不是类型别名。
命名空间没有定义方法。
此外,CreateGraphics
不是静态的,因此无法直接在某个类型上调用,仅在实例上调用。
假设myForm
是Form
的实例:
Graphics g = myForm.CreateGraphics();
在您的关联示例中,隐式调用CreateGraphics()
实例上的this
,并假定该调用位于Form
或Control
类型内。所以,如果你在一个控件/表单中调用它,它就会起作用。
答案 1 :(得分:0)
Control类有CreateGraphics方法。因此,所有控件都具有该方法,您可以使用该方法创建要在其上绘制的图形上下文。
Form frm = new Form();
Graphics g = frm.CreateGraphics();
//you use g to draw on your form frm
这也是您链接的帖子的内容。见评论:
var g = CreateGraphics(); // get a graphics object from your form, or wherever
答案 2 :(得分:0)
CreateGraphics是System.Windows.Forms.Control
上的一个方法你会这样使用它:
//创建一个控件: Panel panel = new Panel();
//从控件中抓取一个图形对象: Graphics graphics = panel.CreateGraphics();
//使用新创建的Graphics对象执行某些操作。