我正试图在Gtkmm DrawingArea中画一个DrawingArea。
是否可以使用cairo_surface_t *来初始化可以传递给Cairo::Context::set_source的Glib::RefPtr?
#include <gtkmm.h>
class CDrawingArea : Gtk::DrawingArea
{
public:
CDrawingArea();
virtual ~CDrawingArea();
void DrawSurface (cairo_surface_t * surface);
protected:
bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr);
cairo_surface_t * m_surface;
};
#include "CDrawingArea.h"
CDrawingArea::CDrawingArea()
{
}
CDrawingArea::~CDrawingArea()
{
}
void CDrawingArea::DrawSurface (cairo_surface_t * surface)
{
m_surface = surface;
Glib::RefPtr<Gdk::Window> win = get_window();
if (win)
{
Gdk::Rectangle r(0, 0, get_allocation().get_width(), get_allocation().get_height());
win->invalidate_rect(r, false);
}
}
bool CDrawingArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr)
{
// Cairo::RefPtr<Cairo::Surface> refSurface ??;
// cr->set_source(refSurface, 0, 0);
cr->paint();
}发布于 2019-06-02 07:16:16
您在寻找Surface的构造函数吗?
Cairo::Surface::Surface ( cairo_surface_t * cobject,
bool has_reference = false
) [explicit]
Create a C++ wrapper for the C instance.
This C++ instance should then be given to a RefPtr.(复制和粘贴破坏了格式,对不起) 1Surface.html#a47b90669a5a85d187cc0d28dc99915c8
https://stackoverflow.com/questions/56408230
复制相似问题