繁体   English   中英

在Windows上使用MonoDevelop中的Cairo绘图

[英]Drawing with Cairo in MonoDevelop on Windows

我安装了MonoDevelop,GTK#和东西。 我打开一些开罗教程(遵循这里给出的建议)。 我在MonoDevelop中创建了一个新的GTK#项目,并将Cairo库添加到引用中。 使用本教程 ,我以简单的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();
}

在运行应用程序时,没有任何内容。 好吧,我认为cairo lib没有安装在系统中。 我从GTK +页面下载它,放入文件夹,项目可执行文件所在 - 并且砰! - 应用程序崩溃(System.DllNotFoundException)。 由于以上所有结果,我有一个问题 - 是否有可能在Winows上的Mono应用程序中使用Cairo?

PS稍后会添加错误窗口截图,如果有任何帮助的话。

我想你错过了一些步骤。

尝试在ctx.LineTo(p2);之间添加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文件夹中。 单声道(或MonoDevelop - 不确定此部分)是否附带所需的库。 您只需通过单击References文件夹然后单击Edit 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,不是吗?)将实现缺乏功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM