代码之家  ›  专栏  ›  技术社区  ›  Brian Hooper

这个调用gdk\u get\u pixmap需要什么?

  •  1
  • Brian Hooper  · 技术社区  · 14 年前

    我已经创建了一个小的绘图区域类,现在需要在expose事件回调期间绘制一个pixmap。但是我不能得到任何我试图编译的参数。以下是代码的相关部分。。。

    类定义。。。

    class set_display_drawing_area : public Gtk::DrawingArea
    {
        public:
            set_display_drawing_area          ();
            virtual ~set_display_drawing_area ();
        protected:
            virtual bool on_expose_event(GdkEventExpose* event);
        private:
            GdkPixmap              *pixmap_ptr;
    };
    

    bool set_display_drawing_area::on_expose_event(GdkEventExpose* event)
    {
        Glib::RefPtr<Gdk::Window> window = get_window();
    
        if (window)
        {
            Gtk::Allocation allocation = get_allocation();
            const int width = allocation.get_width();
            const int height = allocation.get_height();
    
            pixmap_ptr = gdk_pixmap_new (window,    // <-- What is needed here?
                                         width,
                                         height,
                                         -1);
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   Matti Virkkunen    14 年前

    你在这里混合GTKMM(C++)和GTK(C)风格代码。 gdk_pixmap_new 是一个C函数,它不知道模板和类(例如 Glib::RefPtr ). 您可能也希望在pixmap中使用gtkmm:

    Glib::RefPtr<Gdk::Pixmap> pixmap;
    

    pixmap = Gdk::Pixmap::create(window, width, height);