我想用 GTK# 写一个贪吃蛇游戏,但是好几天我都不知道如何处理 DrawingArea
。在我找到的所有示例中,都有对 drawingArea.ExposeEvent
事件的订阅,方法如下:
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();
}
但我在 DrawingArea
对象和 ExposeEventArgs
数据类型上都没有可用的 .ExposeEvent
事件。
我什至不知道它是关于什么的。我想处理渲染,甚至可能以其他方式处理,例如制作位图图像,然后将其分配给 WinForms 中的 PictureBox
之类的东西。
此外,我必须按设定的时间间隔进行绘制,这意味着我还需要其他 GTK# 方法。
我使用 darea.GdkWindow
创建了 Cairo.Context
,但它已被“弃用”。我试过只创建一个 Cairo.Context,然后使用 darea.Draw(cc)
方法绘制,但这也不起作用。
最佳答案
使用 DrawingArea.Drawn
事件。
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();
};
关于c# - GTK# 使用绘图区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70688281/