美文网首页
Gtk 屏幕截图并显示(Linux C语言)

Gtk 屏幕截图并显示(Linux C语言)

作者: 孙庚辛 | 来源:发表于2021-11-30 11:50 被阅读0次

使用 gtk 截图后不需要保存图片文件,直接通过内存中的数据进行显示。
首先安装 gtk :

sudo apt install gtk+-2.0
sudo apt install libgtk2.0*

然后编写应用程序:

#include <gtk/gtk.h>

void destroy(void) {
  gtk_main_quit();
}

GdkPixbuf * get_screenshot(){
    GdkPixbuf *screenshot;
    GdkWindow *root_window;
    gint x_orig, y_orig;
    gint width, height;
    root_window = gdk_get_default_root_window ();
    gdk_drawable_get_size (root_window, &width, &height);      
    gdk_window_get_origin (root_window, &x_orig, &y_orig);

    screenshot = gdk_pixbuf_get_from_drawable (NULL, root_window, NULL,
                                           x_orig, y_orig, 0, 0, width, height);
    return screenshot;
}

int main (int argc, char** argv) {
  GtkWidget* window;
  GtkWidget* image;
  GdkPixbuf * pixbuf;

  gtk_init (&argc, &argv);


  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
//  image  = gtk_image_new_from_file(argv[1]);

  pixbuf = get_screenshot();
  image = gtk_image_new_from_pixbuf(pixbuf);

  gtk_signal_connect(GTK_OBJECT (window), "destroy",
             GTK_SIGNAL_FUNC (destroy), NULL);

  gtk_container_add(GTK_CONTAINER (window), image);
  gtk_window_set_resizable(window, TRUE);
  gtk_widget_set_size_request(window, 800, 600);

  gtk_widget_show_all(window);

  gtk_main();

  return 0;
}

使用以下命令进行编译:

 gcc -Wall  displaytest.c  -o  displaytest  `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`

相关文章

  • Gtk 屏幕截图并显示(Linux C语言)

    使用 gtk 截图后不需要保存图片文件,直接通过内存中的数据进行显示。首先安装 gtk : 然后编写应用程序: ...

  • Linux C 实现屏幕截图

    首先安装 libimlib2-dev 软件包, 然后安装 giblib 最后编写源码文件 Makefile、scr...

  • Ubuntu18搭建Gtk开发环境

    发布自Kindem的博客,欢迎大家转载,但是要注意注明出处 gtk是在Linux下使用c语言构建图形界面的一个库,...

  • 2018 10 31

    学习linux下的gtk编程

  • Ubuntu18.04 + GTK安装

    VirtualBox+Ubuntu18.04搭建Linux虚拟机运行环境 GTK GTK+(GIMP Toolki...

  • Ubuntu截图工具

    ubuntu|flameshot|截图工具 使用Flameshot获取屏幕截图并编辑 功能概述 注释(高亮、标示、...

  • 实验七

    实验七 在Linux系统下编辑C语言程序并运行 实验目的 1.学习简单的C语言程序的编辑风格及其格式要求 2.学会...

  • 操作系统第一次上机实验-Linux系统下的进程创建

    本文使用Linux系统,语言使用C语言 1.如何在Linux系统下,编译运行C语言 1.1创建编写一个.c文件 如...

  • 用vala给go程序加上gui

    vala语言编写gtk界面程序非常简单方便,而且它编译时会翻译成c语言,所以可以方便的调用go编译器生成的c-ar...

  • Ubuntu的简单操作

    操作目录 C语言hello world 简单的linux命令 C语言hello world Linux的一大亮点就...

网友评论

      本文标题:Gtk 屏幕截图并显示(Linux C语言)

      本文链接:https://www.haomeiwen.com/subject/ndcdxrtx.html