Gtk #: Как конвертировать Gtk.Image в Gdk? - PullRequest
2 голосов
/ 24 октября 2010

Я хотел бы написать простую 2D-игру в Mono / Gtk # с MonoDevelop 2.4.Мой первый интерес состоял в том, чтобы отобразить изображение PNG для персонажа игрока на холсте окна (позже я буду реагировать на события клавиатуры, чтобы переместить его).Однако я обнаружил здесь тревожную проблему: пока я получаю объект Gtk.Image для персонажа игрока, для метода DrawImage окна Gdk требуется изображение Gdk.Как я могу преобразовать первый в последний?

public static void ShowImage(Gdk.Window w, Gtk.Image image)
{
    w.DrawImage( Style.ForegroundGC( StateType.Normal ),
                     image,             // ERROR                                    
                     0, 0, image.Pixbuf.Width, image.Pixbuf.Height,
                     image.Pixbuf.Width, image.Pixbuf.Height
    );
}

Это может показаться упрощенным, но, честно говоря, я еще не нашел ответ.

Ответы [ 2 ]

3 голосов
/ 26 октября 2010

Gtk.Image.ImageProp - это свойство, содержащее Gdk.Image, хранящийся в виджете Gtk.Image.

public static void ShowImage(Gdk.Window w, Gtk.Image image)
{
    w.DrawImage( Style.ForegroundGC( StateType.Normal ),
                     image.ImageProp,             // TRY THIS                              
                     0, 0, image.Pixbuf.Width, image.Pixbuf.Height,
                     image.Pixbuf.Width, image.Pixbuf.Height
    );
}

Вот ссылка на документацию GTK #.

0 голосов
/ 26 октября 2010

Gtk.Image - это виджет (или элемент управления в терминологии winforms).

см .: http://library.gnome.org/devel/gtk/unstable/GtkImage.html

Из описания вашей проблемы я не думаю, что вы хотите использовать Gtk.Image, но Gdk.Image.

IE. измените ваш метод ShowImage на: public static void ShowImage (Gdk.Window w, Gdk.Image image)

...