我想用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();
}但是,我既没有.ExposeEvent事件在DrawingArea对象上可用,也没有ExposeEventArgs数据类型。我都不知道是怎么回事。我想处理渲染,甚至以其他方式处理,例如,制作一个位图图像,然后将其分配给来自WinForms的类似于WinForms的东西。
此外,我还必须按设定的间隔绘制,这意味着我还需要其他GTK#方法。
我使用darea.GdkWindow创建了Cairo.Context,但它被称为“弃用”。我尝试过只创建一个Cairo.Context,然后用darea.Draw(cc)方法进行绘图,但这也不起作用。
发布于 2022-07-28 05:35:46
使用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();
};https://stackoverflow.com/questions/70688281
复制相似问题