首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将任何矩形绘制到GTK+ DrawingArea将填充整个DrawingArea

将任何矩形绘制到GTK+ DrawingArea将填充整个DrawingArea
EN

Stack Overflow用户
提问于 2011-01-25 23:59:06
回答 1查看 3K关注 0票数 0

我有一个GTK+ DrawingArea,它应该在左上角显示一个矩形。当我使用Cairo绘制矩形时,整个绘图区域都填充了矩形的颜色。我怎样才能防止这种情况呢?开罗为什么要这么做?我做错了什么?

代码语言:javascript
复制
#include <gtkmm.h>

class Window : public Gtk::Window
{
  private:
    Gtk::DrawingArea area;

    bool on_area_expose(GdkEventExpose* event)
    {
      Gtk::Allocation allocation = area.get_allocation();
      Cairo::RefPtr<Cairo::Context> context =
          area.get_window()->create_cairo_context();
      int width = allocation.get_width();
      int height = allocation.get_height();
      context->set_source_rgba(0, 0, 0, 1);
      context->rectangle(0, 0, double(width)/10, double(height)/10);
      context->paint();
      return true;
    }

  public:
    Window() : Gtk::Window()
    {
      area.signal_expose_event().connect(
        sigc::mem_fun(*this, &Window::on_area_expose));
      add(area);
    }
};

int main(int argc, char* argv[])
{
  Gtk::Main app(argc, argv);
  Window window;
  window.show_all();
  Gtk::Main::run(window);
  return 0;
}

我使用以下命令编译代码

代码语言:javascript
复制
g++ gtktest.cpp `pkg-config --libs --cflags gtkmm-2.4` -o gtktest
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-26 07:03:55

context->paint()在当前剪辑区域内的所有位置绘制当前源。要调用的正确方法是Gtk::Context::fill

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

https://stackoverflow.com/questions/4795715

复制
相关文章

相似问题

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