首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Gtkmm cairo_surface_t DrawingArea中绘制DrawingArea

如何在Gtkmm cairo_surface_t DrawingArea中绘制DrawingArea
EN

Stack Overflow用户
提问于 2019-06-01 15:56:13
回答 1查看 456关注 0票数 0

我正试图在Gtkmm DrawingArea中画一个DrawingArea。

是否可以使用cairo_surface_t *来初始化可以传递给Cairo::Context::set_source的Glib::RefPtr?

代码语言:javascript
复制
#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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-02 07:16:16

您在寻找Surface的构造函数吗?

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56408230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档