1

我创建了一个小绘图区域类,现在需要在暴露事件回调期间绘制一个像素图。但我无法获得我尝试编译的任何参数。以下是代码的相关部分...

类定义...

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);
4

1 回答 1

2

您在这里混合了 gtkmm (C++) 和 gtk (C) 样式代码。gdk_pixmap_new是一个 C 函数,它不知道模板和类(例如Glib::RefPtr)。您可能还想将 gtkmm 用于您的像素图:

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

pixmap = Gdk::Pixmap::create(window, width, height);
于 2010-08-29T09:58:42.703 回答