簡體   English   中英

GTK3-文本視圖透明度以顯示背后的應用程序

[英]GTK3 - textview transparency to show applications behind

我目前正在開發一個名為Xpad的現有Linux應用程序,該應用程序是用C編寫的便箋應用程序。我嘗試實現透明性,但是我很難實現我想要的。 便簽看起來像這樣。

一個墊的示例

我有一個(頂層)gtk_window和一個gtk_textview。 如果使用功能gtk_widget_override_background_color()將textview的背景色設置為透明色(alpha值小於1的GdkRGBA),則后面的gtk_window的顏色將變得更加可見。

但是,我不想看到gtk_window,而是看到gtk_window后面的應用程序,例如瀏覽器,libreoffice或桌面。

如果使用gtk_widget_override_background_color()或gtk_widget_set_opacity()將gtk_window設置為一定的透明度,則包括窗口裝飾在內的整個小部件都將變得(部分)透明。

為了使可見對象之間的關系更加清楚,我創建了不同部分的圖表,並標記了我認為發生透明問題的位置。

xpad對象的關系

任何人都有任何想法如何使textview背景透明,而不使窗口裝飾透明,因此我可以看到此應用程序背后的內容嗎?

為小部件設置適當的RGBA視覺效果

w = //some GtkWidget or GtkWidget derived klass (i.e. GtkWindow)
gtk_widget_set_app_paintable (w, TRUE); // important or you will get solid color

// the next 3 lines should be wrapped in a func which is also hooked to "screen-changed"
GdkScreen *screen = gtk_widget_get_screen (w);
GdkVisual *visual = gdk_screen_get_rgba_visual (screen);
gtk_widget_set_visual(w, visual);

gtk_widget_show_all(w);



g_signal_connect(G_OBJECT(w), "screen-changed", G_CALLBACK(screen_changed_contaniing_above_code), NULL);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM