代码之家  ›  专栏  ›  技术社区  ›  Fake Code Monkey Rashid

如何旋转gtk小部件?

  •  3
  • Fake Code Monkey Rashid  · 技术社区  · 16 年前

    此外,假设所需的旋转度为90°。

    如何旋转它?我认为默认情况下这是不可能的,但我确实认为这是可能的。

    然而,我不知道如何开始。我是否编写自定义小部件?我需要什么子类?

    2 回复  |  直到 16 年前
        1
  •  8
  •   ptomato    16 年前

    label.set_angle(90)
    button1.get_child().set_angle(90) # assuming it's not a stock button
    button2.get_child().set_angle(90)
    vbox.set_orientation(gtk.ORIENTATION_HORIZONTAL)
    
        2
  •  0
  •   liori    16 年前

    首先,如果您的小部件没有自己的X窗口(VBox没有),请将其放在EventBox中。

    X composite extension 在X服务器中启用,您可以通过使用Xlib或等效工具手动调整小部件的X窗口来实现这一点。警告,这是一个黑客解决方案,如果您的用户没有启用合成扩展,它将不起作用。

    如果不合成扩展,我看不到任何方法可以做到这一点。。。嗯,除了用手画所有的东西。GTK使用Cairo图形库来绘制小部件,理论上,在Cairo内部设置转换矩阵就足够了。。。但我看不到这样做的实际可能性。

        3
  •  0
  •   Xliff    7 年前

    我知道这个问题已经有一段时间没有得到回答了,但是如果你想开始子类化,下面是C代码。这是取自GTK演示套件。

    https://github.com/GNOME/gtk/blob/gtk-3-22/demos/gtk-demo/offscreen_window.c