代码之家  ›  专栏  ›  技术社区  ›  tayoung

如何在GTK中禁用TextView的透明度?

  •  0
  • tayoung  · 技术社区  · 7 年前

    我正在制作一个GTK#应用程序,我对TextView(或者ScrolledWindow)有一些奇怪的行为,我真的说不出来:

    problem

    它基本上是复制它背后的任何东西,并将其用作背景,而背景应该是纯色。当我切换选项卡时,它甚至会显示以前选择的选项卡中的内容。

    如何修复此行为?

    1 回复  |  直到 7 年前
        1
  •  0
  •   tayoung    7 年前

    嗯,我不喜欢这样,我必须这样做,但它是有效的:

        // Fix the weird display bug
        drawnHandler = new DrawnHandler((o, args) =>
        {
            this.Drawn -= drawnHandler;
            var color = ConsoleBox.StyleContext.GetBackgroundColor(StateFlags.Normal);
            ConsoleBox.OverrideBackgroundColor(StateFlags.Normal, new Gdk.RGBA()
            {
                Red = color.Red,
                Green = color.Green,
                Blue = color.Blue,
                Alpha = 1
            });
        });
        this.Drawn += drawnHandler;
    

    这将获得正确的背景颜色,并在没有alpha的情况下进行设置(我甚至不知道alpha是如何设置的,因为我从未在代码中的任何地方更改过背景颜色)。