Я создал небольшой класс области рисования, и теперь мне нужно растровое изображение для рисования во время обратного вызова события expose. Но я не могу получить параметр, который я пытался скомпилировать. Вот соответствующие части кода ...
Определение класса ...
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;
};
и обратный вызов expose ...
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);
Здесь вы смешиваете код стилей gtkmm (C++) и gtk (C). gdk_pixmap_new
— это функция C, которая ничего не знает о шаблонах и классах (например, Glib::RefPtr
). Возможно, вы также захотите использовать gtkmm для растрового изображения:
Glib::RefPtr<Gdk::Pixmap> pixmap;
и
pixmap = Gdk::Pixmap::create(window, width, height);