Итак, после большого терпения я в конце концов нашел ответ на вопрос, как начать работу с Gdk #.
По сути, только события могут вызвать рисование.Я пытался вызывать рисунки напрямую из методов, но это не сработало.Вот основной код, который мне не хватало в C #:
using System;
using Gdk;
using Gtk;
class GdkApp : Gtk.Window
{
public static void Main()
{
Application.Init();
new GdkApp();
Application.Run();
}
public GdkApp() : base("Simple drawing")
{
SetDefaultSize(230, 150);
DeleteEvent+=delegate {Application.Quit(); };
ShowAll();
}
protected override bool OnExposeEvent (EventExpose evnt)
{
bool ok = base.OnExposeEvent (evnt);
draw ();
return ok;
}
void draw()
{
Gdk.GC gc = new Gdk.GC ((Drawable)base.GdkWindow);
gc.RgbFgColor = new Gdk.Color (255, 50, 50);
gc.RgbBgColor = new Gdk.Color (0, 0, 0);
gc.SetLineAttributes (3, LineStyle.OnOffDash,
CapStyle.Projecting, JoinStyle.Round);
Gdk.Point[] pts = new Gdk.Point[8];
pts [0] = new Gdk.Point (10, 50);
pts [1] = new Gdk.Point (15, 70);
pts [2] = new Gdk.Point (20, 80);
pts [3] = new Gdk.Point (25, 70);
pts [4] = new Gdk.Point (30, 80);
pts [5] = new Gdk.Point (40, 90);
pts [6] = new Gdk.Point (55, 85);
pts [7] = new Gdk.Point (75, 65);
base.GdkWindow.DrawLines (gc, pts);
}
}
Здесь мы строим главное окно и записываем все чертежи в методе OnExposeEvent.Этот метод вызывается, когда любой виджет необходимо (полностью или частично) перерисовать.Там вам нужно создать экземпляр объекта Gdk.GC (контекст) с параметром «Drawable».Там нет большого выбора: Gdk.Pixmap или Gdk.Window.Я выбрал Gdk.Window, так как это была самая простая поверхность для рисования.Затем вы можете настроить объект контекста, чтобы решить, как он будет нарисован.
Наконец, и непосредственно из объекта Drawable, на котором вы хотите рисовать, вы можете вызвать методы рисования: здесь я просто хотел построить сериюиз 8 соединенных точек.
Я надеюсь, что это может помочь некоторым другим пользователям, пытающимся понять логику этого пространства имен gdk #.