首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GTK#的DrawingArea

使用GTK#的DrawingArea
EN

Stack Overflow用户
提问于 2022-01-12 20:53:57
回答 1查看 89关注 0票数 3

我想用GTK#编写一个蛇游戏,但是有几天我不知道如何处理DrawingArea。在我发现的所有示例中,都有对drawingArea.ExposeEvent事件的订阅,方法如下:

代码语言:javascript
复制
void OnDrawingAreaExposed (object source, ExposeEventArgs args)
{   
    DrawingArea darea = (DrawingArea) source;
    Cairo.Context ctx = Gdk.CairoHelper.Create (darea.GdkWindow);

    // drawing here ...

    ((IDisposable) ctx.Target).Dispose();
    ((IDisposable) ctx).Dispose();
}

但是,我既没有.ExposeEvent事件在DrawingArea对象上可用,也没有ExposeEventArgs数据类型。我都不知道是怎么回事。我想处理渲染,甚至以其他方式处理,例如,制作一个位图图像,然后将其分配给来自WinForms的类似于WinForms的东西。

此外,我还必须按设定的间隔绘制,这意味着我还需要其他GTK#方法。

我使用darea.GdkWindow创建了Cairo.Context,但它被称为“弃用”。我尝试过只创建一个Cairo.Context,然后用darea.Draw(cc)方法进行绘图,但这也不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-28 05:35:46

使用DrawingArea.Drawn事件。

代码语言:javascript
复制
var drawing = new DrawingArea();
drawing.Drawn += (s, e) =>
{
    var cr = e.Cr;
    cr.Rectangle(100, 100, 100, 100);
    cr.SetSourceRGB(255, 0, 0);
    cr.Fill();
};

参考资料:https://github.com/GtkSharp/GtkSharp/blob/develop/Source/Samples/Sections/Widgets/DrawingAreaSection.cs

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70688281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档