首页 > 其他分享 >GtkSharp 设置窗口背景透明

GtkSharp 设置窗口背景透明

时间:2024-04-25 09:23:35浏览次数:24  
标签:透明 窗口 screen Gtk GtkSharp visual var

本文告诉大家如何在 GTK Sharp 里面设置窗口背景透明

在 GTK 里面设置窗口背景透明十分简单,只需使用如下代码即可

        this.AppPaintable = true;
        var screen = this.Screen;
        var visual = screen.RgbaVisual;
        if (visual is not null && screen.IsComposited)
        {
            this.Visual = visual;
        }

感谢 walterlv 大佬提供此方法,我只是代为记录的工具人

上面代码一般是放在窗口的构造函数里面,如以下示例

internal sealed class DemoWindow : global::Gtk.Window
{
    public DemoWindow() : base(global::Gtk.WindowType.Toplevel)
    {
        Title = "Walterlv Blank Gtk App";
        SetDefaultSize(800, 600);
        Add(new Area());

        this.AppPaintable = true;
        var screen = this.Screen;
        var visual = screen.RgbaVisual;
        if (visual is not null && screen.IsComposited)
        {
            this.Visual = visual;
        }
    }

    protected override bool OnDeleteEvent(Event evnt)
    {
        global::Gtk.Application.Quit();
        return base.OnDeleteEvent(evnt);
    }
}

如果你运行代码没有看到窗口背景透明,那可能是你的系统里面的桌面窗口合成管理不正确或没安装,请自行解决,如安装 compiz 窗口合成管理器。详细请看 dotnet C# 设置 X11 应用窗口背景透明 这篇博客的窗口合成管理器处理部分

本文代码放在 https://github.com/walterlv/Walterlv.BlankUnoApp 仓库里,欢迎大家拉取代码运行

标签:透明,窗口,screen,Gtk,GtkSharp,visual,var
From: https://www.cnblogs.com/lindexi/p/18100668

相关文章

  • 2024-04-21---真题--一个字符串中的最长重复子串(滑动窗口变种)
    真题-一个字符串中的最长重复子串(滑动窗口变种)题目:思路:首先这不是求公共子串,所以不需要动态规划记录。然后一个string相当于就是一个Char[],所以直接滑动窗口来枚举最好做。说白了,这道题就是求abc|abc的问题。其实就是可以看作是一个大的滑动窗口(包含两个小的窗口),并且大的窗口......
  • 简述:将带透明通道的PNG图片叠加到Framebuf上
    PNG图片,维基百科简介:https://zh.wikipedia.org/wiki/PNG现在带透明通道的最常见的PNG文件都是PNG32格式,所以首先将PNG文件解析为RGBA-8-8-8-8即32位真彩像素(PNG32)(A代表Alpha透明通道)PNG帧解析PNG文件编码比BMP复杂一点,但还是可以解析的。在no_stdrust上我就偷懒使用了mi......
  • Windows 上左键按住窗口标题栏的阻塞和等待500ms"退出"阻塞两个行为的小研究
    之前就注意到一个现象就是windows的窗口被右键菜单栏弹出菜单后或者按住右键后整个程序似乎会被冻结,而对于游戏更是直接像停掉了主循环一样.除此之外左键按住窗口也会有同样的效果,但是例外是部分游戏会被阻塞500ms后恢复,而有些干脆没受到影响.不过这个问题看上去重要......
  • MAUI Android 透明状态栏/导航栏(也有叫沉浸式的)
    不说任何废话,上代码,不好用来打我Platforms/Android/MainActivity.csprotectedoverridevoidOnCreate(BundlesavedInstanceState){Google.Android.Material.Internal.EdgeToEdgeUtils.ApplyEdgeToEdge(Window,true);if(Operatin......
  • 使QOpenGLWidget的背景透明
    方法其实Qt帮助文档已经说了,如下图。大意是如果你想让QOpenGLWidget下方的子Widget可见只需要设置Qt::WA_AlwaysStackOnTop属性就行了;如果QOpenGLWidget下方没有子Widget,只是想创建一个半透明的窗口,那么对顶层窗口(主窗口)使用传统的Qt::WA_TranslucentBackground属性就可以实现了。......
  • VSCode非活跃预处理程序块Inactive颜色设置(底色字色透明度)
    VSCode非活跃预处理程序块——#if0非活跃预处理程序块#else活跃预处理程序块#endif#if1活跃预处理程序块#else非活跃预处理程序块#endif 效果 ......
  • 2024-04-18---中等题---无重复字符的最长子串(滑动窗口)
    无重复字符的最长子串(滑动窗口)题目:思路:一暴力法:特殊情况,长度为0或者1声明每次位置的最大长度,和最大的最大值(返回值)双层循环,有点暴力二滑动窗口:​ 基本概念:维持一个窗口(可以理解为队列),当新进来的元素与前面的重复,则把重复的元素及之前的元素全部忽略(可以理解为......
  • MYSQL 8 窗口函数的优点
    窗口函数的特点是可以分组,而且可以在分组内排序。另外,窗口函数不会因为分组而减少原表中的行数I这对我们在原表数据的基础上进行统计和排序非常有用。递归调用 复杂报表统计能力增强:窗口函数允许在数据集(窗口)内进行行级别的运算,而不会像传统聚合函数那样折叠所有行到单个输......
  • 【转载】清空WPF自带样式,以及透明按钮
    原文:https://www.cnblogs.com/Cindys/archive/2012/09/11/2680501.html空样式按钮<Stylex:Key="EmptyButtonStyle"TargetType="Button">           <SetterProperty="Padding"Value="0"/>           <SetterProper......
  • 让一个元素在网页上跟随网页窗口大小变化始终保持上下左右居中
    ​ 废话少说,直接上代码,懂的都懂:<!DOCTYPEhtml><htmlstyle="font-size:100px;"><head> <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"> <styletype="text/css"> *{margin:0......