- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个绘图区,我在里面画了一些图形或图像,所以我有这个回调来截屏:
void CanvasToolBox::actionCanvasCamera()
{
auto root = Gdk::Window::get_default_root_window();
int height = root->get_height();
int width = root->get_width();
auto pixels = Gdk::Pixbuf::create(root, 0, 0, width, height);
pixels->save("s.png", "png");
}
该代码截取了整个屏幕..但在我的例子中,我需要截取特定窗口 Gtk::DrawingArea 的屏幕截图。因此函数 create
需要一个 Gdk::Window 作为参数。有没有办法截取 Gtk 特定窗口的屏幕截图?谢谢
最佳答案
我不习惯 GTKmm(我改用 C 和 Python API),但是对于您的示例,这看起来非常简单。您只想使用 Gtk::DrawingArea
而不是根窗口。所以你在文档中搜索 Gdk::Window::get_default_root_window
并发现它返回一个 Gdk::Window
。
现在您必须找到如何从 Gtk::DrawingArea
中获取 Gdk::Window
。因此,您转到 Gtk::DrawingArea
的文档并搜索一个返回 Gdk::Window
的函数,然后发现这是 Gtk::Widget::get_window
, 它继承自 Gtk::Widget
。顺便说一句,您可能更喜欢 const 版本,因为您不修改窗口,只需阅读它。
然后,您可以将获取根窗口的代码替换为获取您关心的小部件的 Gdk::Window
的调用,这样就完成了。如果您想走得更远,而不是使用 Gdk::Pixbuf
,可能有一种方法可以使用 cairo 上下文。
关于c++ - GTKMM:截屏 DrawingArea?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52265773/
我有一个 GTK+ DrawingArea,它应该在左上角显示一个矩形。当我使用 Cairo 绘制矩形时,整个绘图区域都填充了矩形的颜色。我怎样才能防止这种情况发生?开罗为何这么做?我做错了什么? #
我目前在框架内加载一个 DrawingArea 小部件 - 它总是扩展以填充框架。然后我可以在 DrawingArea 上设置 configure 事件来分配一个与窗口大小相同的像素图,在它上面绘制,
我想通过继承 DrawingArea Widget 来实现自定义小部件,为此我需要使用 cairo 进行绘制。似乎在 gtk3 中引入了一个名为“draw”的新信号。如何在小部件内部绘制? map 和
我想更新 DrawingArea 中的 cairo 绘图。我试图通过使用新函数作为参数调用 DrawingArea::connect_draw(...) 来实现这一点。我的问题是它没有替换原来的绘图函
我正在尝试使用 GTK、Cairo 和 Glade 在 Rust 中构建一个 GUI。我想使用 gtk::DrawingArea 绘制一个运动场,但我不知道如何使用它。我有这个: extern cra
我正在根据找到的基本教程编写一个 PyGtk 绘图程序 here . 有什么方法可以将图像添加到绘图区域,这样您仍然可以在图像上绘图吗?例如邮票或导入的照片。我试过添加 gtk.Image() 但 g
我有以下 Python 2.7/PyGObject 3.0/PyGST 0.10 模块: from gi.repository import Gtk, Gdk, GdkPixbuf import pa
我正在尝试制作简单的正方形,您可以在其中使用鼠标进行绘画。问题是,每当绘制信号发生时,cairo 表面似乎已完全清除。我理解这一点,因为在第一个 queue_draw() 之后,白色背景消失了,我看到
我有一个绘图区,我在里面画了一些图形或图像,所以我有这个回调来截屏: void CanvasToolBox::actionCanvasCamera() { auto root = Gdk::W
我正在使用 gtkmm 和 cairo 开发一款平台游戏,但我找不到将图像设置为背景的方法,因此我不必在每次绘制事件时都重新绘制它。我正在将图像作为 pixbufs 进行管理。这真的可能吗,还是我想错
我想画一些相框,一张一张的Gtk::DrawingArea .在应用开始时,我需要获取DrawingArea的大小, 分配一个 RGB 缓冲区, 但是, DrawingArea::get_width(
我创建了一个 Gtk.grid,其中包含一堆可调整大小并可在网格周围拖动的按钮。 我还创建了一个 Gtk.drawingarea 来绘制网格线。我希望让我的按钮像这样透明: Gtk.Button.se
我想使用 PIL 将 gtk.DrawingArea() 对象内容保存到 jpeg 文件。我特别想添加到 this script制作照片的可能性。我找到了如何save image to jpeg 。我
我有一个使用 Glade 创建的界面。它包含一个 DrawingArea 和按钮。 我尝试创建一个线程,每隔 X 次刷新我的 Canva。几秒钟后,我收到如下错误消息: “X 窗口服务器 0.0”、“
我正在创建一个用于数据可视化的小工具。GUI 是用 Pygtk 创建的,非常简单。用户输入文件名后,可以按“calc”按钮查看输出。输出由 pycairo 渲染并呈现在 gtk.DrawingArea
先上GTKmm documentation example在 more complex clock example 上,他们正在继承 public Gtk::DrawingArea 来构建他们的应用程
我在 CEF Python 3 ( link ) 上得到这段代码 ... self.container = gtk.DrawingArea() self.container.s
我在 Ubuntu 12.04 LTS 32 位上使用带有 GNU 工具链和 gtkmm3 的 C++11。我一直在玩 Programming with gtkmm 3 中 gtkmm3 的一些示例。
我有一个使用 Cairo image surface 的小型 PyGI 项目,然后我用 surface pattern 缩放它并在 Gtk.DrawingArea 上渲染。 我想将缩放 版本写入 PN
我正在使用“gtkmm”制作一个 GUI 程序。我想在“Gtk::DrawingArea”小部件上绘制一些图形,但我希望该小部件“可调整大小”,所以当我绘制时,让我们说一条从“(0, 0)”到“(50
我是一名优秀的程序员,十分优秀!