标签: gdk

gdk_screen_get_default() 返回 null

请帮助这个初学者的程序来获取 gdk 屏幕属性。我有一个小型 C++ 程序来查找连接的显示单元。我在 Linux Debian 上使用 C++。gdk_screen_get_default()不返回Screen对象。如果我不检查屏幕对象,则会出现以下错误。

错误 (进程:8023):Gdk-CRITICAL **:gdk_screen_get_monitor_geometry:断言“GDK_IS_SCREEN(屏幕)”失败

我浏览了相关帖子并参考了以下代码片段。

感谢您的帮助。任何解决此问题的指针/指南都会有所帮助。

我连接了一台显示器,显示设置为

$ echo $XDG_CURRENT_DESKTOP
GNOME

$ echo $DISPLAY
:0
Run Code Online (Sandbox Code Playgroud)

代码

    #include <gdk/gdk.h>
    #include <iostream>

    /*
    GTK version 3.14.5
    g++ getScreenInfo.cpp -o getScreenInfo `pkg-config gtk+-3.0 --cflags --libs`
    */

    int main()
    {
       GdkScreen *screen;
       screen = gdk_screen_get_default();           
       int num_monitors;
       int i;

       if (screen)
       {
          num_monitors = gdk_screen_get_n_monitors(screen);

          for (i = 0; i < num_monitors; i++)
          {
              GdkRectangle rect;
              gdk_screen_get_monitor_geometry (screen, i, &rect); …
Run Code Online (Sandbox Code Playgroud)

c++ gdk c++11

2
推荐指数
1
解决办法
1742
查看次数

Linux 绘制像素缓冲区

问题很简单,我有一个生成像素缓冲区的代码。现在我需要呈现这个像素缓冲区,而不是保存图像然后分析它。

解决方案是什么:

  1. 打开窗户
  2. 将此窗口中的所有像素替换为我的像素 RGB888

到目前为止的建议是:要使用 opengl,为覆盖窗口的矩形创建一个顶点缓冲区,并使用像素着色器来绘制像素。这显然不是在窗口中交换像素缓冲区的最佳方法。

平台:Ubuntu 18

c c++ linux gdk

2
推荐指数
1
解决办法
2871
查看次数

为什么我们应该在button_press_event.handler的末尾返回True?

请查看本页底部的示例:http: //www.pygtk.org/pygtk2tutorial/sec-EventHandling.html 它说:

   57   def button_press_event(widget, event):
   58       if event.button == 1 and pixmap != None:
   59           draw_brush(widget, event.x, event.y)
   60       return True
Run Code Online (Sandbox Code Playgroud)

那么,对于什么是"返回真实"?

python gtk gdk

1
推荐指数
1
解决办法
199
查看次数

将GIcon转换为GdkPixbuf

我正在使用GAppInfo / GDesktopAppInfo。

GIcon *icon = gtk_app_info_get_icon (G_APP_INFO(appinfo));

现在,我需要将其放在GtkIconView上,但是我发现无法通过GIcon创建GdkPixbuf。有人知道吗?非常感谢!

编辑1:实际上是GThemedIcon。

gtk gdk gdkpixbuf

1
推荐指数
1
解决办法
746
查看次数

从二进制数据创建gtk.gdk.Pixbuf

我正在努力将二进制数据变成一个gtk.gdk.pixbuf.

这应该说明我的问题:

file = open("image.jpg", "rb")
//Ultimately this is going to come from a BLOB
binary = f.read()
//I created a pixbuf directly from the jpg 
//and took the rowstride values &c. from that
pixbuf = gtk.gdk.pixbuf_new_from_data(
    binary, gtk.gdk.COLORSPACE_RGB, False, 8 , 450, 640, 1352)
Run Code Online (Sandbox Code Playgroud)

这失败了:

ValueError: data length (90825) is less then required by the other parameters (865280)

我目前的解决方法是将二进制数据写入文件,然后Pixbuf从该文件创建.这只是感觉很hacky.我正在从数据库中读取二进制数据,所以我真的需要一个可以直接从缓冲区创建pixbuf的解决方案.

我不明白为什么如果我只是BLOB从数据库中读取并将其写入文件 - 然后将文件作为pixbuf加载,这很容易,但更难直接从缓冲区!

我究竟做错了什么?

python gtk gdk gdkpixbuf

1
推荐指数
1
解决办法
1685
查看次数

如何打开图像而不是C/GTK中的小部件?

我想要做的是在C中打开几个图像,然后创建一个由GtkImages组成的表,可以将实际图像设置或重置为其中一个初始图像(我正在尝试创建一个棋盘).我尝试用GTK做这个,但我不能多次使用图像,因为它是一个小部件.我尝试使用GDK,但根据文档,所有(与图像相关的)GDK功能都已弃用.

宽度应如下所示:

window <- table <- a1 a2 a3 ... a8                a1 - h8 are GtkImages.
                   b1 b2 b3 ... b8
                   c1 c2 c3 ... c8
                    ...
                   h1 h2 h3 ... h8
Run Code Online (Sandbox Code Playgroud)

有没有人有任何想法?我对在GTK中打开/使用图像/像素图感到困惑.我也在使用Ubuntu.非常感谢所有答案.

c gtk ubuntu image gdk

0
推荐指数
1
解决办法
110
查看次数

这个if语句如何在C中起作用.我知道它的作用但是我不能把它分成几块

我很难理解这个if语句是如何工作的:

if (keyval == GDK_PLUS &&
    (event->state & ~consumed & ALL_ACCELS_MASK) == GDK_CONTROL_MASK)
Run Code Online (Sandbox Code Playgroud)

在这里成立https://developer.gnome.org/gdk3/stable/gdk3-Keyboard-Handling.html#gdk-keymap-translate-keyboard-state

完整示例代码:

#define ALL_ACCELS_MASK (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK)

gdk_keymap_translate_keyboard_state (keymap, event->hardware_keycode,
                                     event->state, event->group,
                                     &keyval, NULL, NULL, &consumed);

if (keyval == GDK_PLUS &&
    (event->state & ~consumed & ALL_ACCELS_MASK) == GDK_CONTROL_MASK)
    // Control was pressed
Run Code Online (Sandbox Code Playgroud)

我的目标是理解它,所以我可以将它移植到Vala,因为Valadocs中给出的示例与C中的相同,而不是Vala.

c gdk

0
推荐指数
1
解决办法
89
查看次数

标签 统计

gdk ×7

gtk ×4

c ×3

c++ ×2

gdkpixbuf ×2

python ×2

c++11 ×1

image ×1

linux ×1

ubuntu ×1