在Windows上的MonoDevelop中与Cairo绘图
本文关键字:Cairo 绘图 中与 MonoDevelop Windows 上的 | 更新日期: 2023-09-27 18:26:38
我安装了MonoDevelop、GTK#等等。我打开了一些开罗教程(按照这里给出的建议)。我在MonoDevelop中创建了一个新的GTK#项目,并将开罗图书馆添加到参考文献中。使用本教程,我用一个简单的GTK表单为DrawingArea创建了一个公开事件
protected void OnDrawingAreaExposed (object obj, Gtk.ExposeEventArgs args)
{
DrawingArea drawArea = (DrawingArea)obj;
Cairo.Context ctx = Gdk.CairoHelper.Create(drawArea.GdkWindow);
PointD p1,p2,p3,p4;
p1 = new PointD (10,10);
p2 = new PointD(100,100);
ctx.MoveTo(p1);
ctx.LineTo(p2);
((IDisposable)ctx).Dispose();
}
运行应用程序时,没有绘制任何内容。好的,我假设系统中没有安装cairolib。我从GTK+页面下载它,放在文件夹中,项目可执行文件就在那里-砰!-应用程序崩溃(System.DllNotFoundException)。由于以上所有的结果,我有一个问题-有可能在Winows上的Mono应用程序中使用Cairo吗
p.S.稍后会添加错误窗口截图,如果有任何帮助的话。
我认为您遗漏了一些步骤。
尝试在ctx.LineTo(p2);
和((IDisposable)ctx).Dispose();
:之间添加此项
// give a color to line (red in this case)
ctx.Color = new Color (1,0,0);
// this is line type
ctx.Stroke ();
((IDisposable) ctx.Target).Dispose ();
您不应该试图将编译后的cairo库复制到bin文件夹中。Mono(或MonoDevelop——不确定这一部分)附带了所需的libs。您只需单击References文件夹,然后单击编辑引用来添加它们(类似于Visual Studio)。
问题出现在MonoDevelop的GTK UI编辑器中。没有添加自定义小部件的选项,尽管我认为这是一项常见的任务。如果你想这样做,将不得不破解该编辑器生成的文件(名为窗口类的文件,位于gtk-gui文件夹中)。例如,如果您有一个CairoCanvas类,它继承了Gtk.DrawingArea小部件类,那么您只需找到行,如this.drawingarea1 = new global::Gtk.DrawingArea()
,并将其更改为this.drawingarea1 = new CairoCanvas()
,当然,不要忘记向上添加using YourProjectName;
指令。每次更改GUI中的某些内容时,都会重新生成文件。然后你转到那个文件,看到它被更改的警告,按下"保留更改"按钮来保留你的工作。然后再次重建你的项目,就这样。
我很高兴地希望这个答案能帮助一些新加入Mono的人。我希望庆祝MonoDevelop社区(它是OSS,不是吗?)实现这一缺乏功能的那一天。