C# 透明背景与 GTK#

标签 c# linux port transparency gtk#

我用 .Net 制作了这个非常简单的应用程序大约 2 分钟,但我需要用 Gtk# 移植它才能在 Linux 上正常工作。

我搜索了如何使背景透明,但我没有运气;我还搜索了如何更改背景颜色,希望找到 TransparenceKey 的等效项,但又没有运气。

最重要的是:背景透明怎么办?

这是我的应用程序的代码;它是使用 Visual Studio 2010 和 .Net Framework 4 Client Profile 编写的

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Calendario {
    public partial class Calendar : Form {
        private Timer temporizador;
        private Label lblHora, lblDia, lblFecha;
        public Calendar () {
            InitializeComponent ();

            this.BackColor = System.Drawing.Color.Lime;
            this.ClientSize = new System.Drawing.Size ( 1600, 900 );
            this.DoubleBuffered = true;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.ShowIcon = false;
            this.ShowInTaskbar = false;
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.TransparencyKey = System.Drawing.Color.Lime;

            temporizador = new Timer();
            temporizador.Tick += new System.EventHandler ( this.temporizador_Tick );
            temporizador.Interval = 1;
            temporizador.Enabled = true;

            lblHora = new Label();
            lblHora.AutoSize = true;
            lblHora.Font = new System.Drawing.Font ( "GE Inspira", 64F, System.Drawing.FontStyle.Regular,
                                                    System.Drawing.GraphicsUnit.Point, ( ( byte ) ( 0 ) ) );
            lblHora.Location = new Point(1240, 12);
            lblHora.TextAlign = ContentAlignment.MiddleRight;
            lblHora.ForeColor = Color.FromArgb(255, 255, 32, 32);
            this.Controls.Add(lblHora);

            lblDia = new Label();
            lblDia.AutoSize = true;
            lblDia.Font = new System.Drawing.Font ( "GE Inspira", 36F, System.Drawing.FontStyle.Regular,
                                                    System.Drawing.GraphicsUnit.Point, ( ( byte ) ( 0 ) ) );
            lblDia.Location = new Point(1430, 117);
            lblDia.TextAlign = ContentAlignment.MiddleRight;
            lblDia.ForeColor = Color.FromArgb(255, 255, 8, 8);
            this.Controls.Add(lblDia);

            lblFecha = new Label();
            lblFecha.AutoSize = true;
            lblFecha.Font = new System.Drawing.Font ( "GE Inspira", 28F, System.Drawing.FontStyle.Regular,
                                                    System.Drawing.GraphicsUnit.Point, ( ( byte ) ( 0 ) ) );
            lblFecha.Location = new Point(1375, 186);
            lblFecha.TextAlign = ContentAlignment.MiddleRight;
            lblFecha.ForeColor = Color.FromArgb(255, 255, 0, 0);
            this.Controls.Add(lblFecha);
        }

        private void temporizador_Tick ( object sender, EventArgs e ) {
            lblHora.Text = DateTime.Now.ToString("HH:mm:ss");
            lblDia.Text = DiaDeLaSemana(DateTime.Now.DayOfWeek.ToString());
            lblFecha.Text = DateTime.Now.Date.ToShortDateString();
        }

        private string DiaDeLaSemana(string DayOfWeek) {
            switch (DayOfWeek) {
                case "Monday":
                    return "lunes";
                case "Tuesday":
                    return "martes";
                case "Wednesday":
                    return "miércoles";
                case "Thursday":
                    return "jueves";
                case "Friday":
                    return "viernes";
                case "Saturday":
                    return "sábado";
                default:
                    return "domingo";
            }
        }
    }
}

预先感谢您的帮助!

最佳答案

默认情况下,Compiz 没有打开窗口透明度。 http://www.jameswigley.com/2012/04/27/making-ubuntu-unity-look-beautiful-by-enabling-transparency/

要在桌面 Windows 上启用透明度,请按照下列步骤操作:

1) Install Compiz Config Settings Manager (if you haven’t already)
sudo apt-get install compizconfig-settings-manager compiz-plugins
2) Alt + F2, type ‘ccsm’ and press Enter to launch CCSM.
3) Click on the ‘Opacity Brightness & Saturation’ Plugin / ‘Opacity’ tab.
4) Click ‘New’. Click ‘+’ and a new window will appear. Click ‘Grab’ and then select the desktop window on which you want to enable transparency. The name will then be filled into the Value field. Click ‘add’. Range 0 (transparent) – 100 (opaque).
5) Transparency can the be changed via the Window Values slider .
Some common window classes are ‘Ccsm’,'Nautilus’,'Dialog’,'Normal’,'Empathy’,'Gedit’,'Gnome-Terminal’

关于C# 透明背景与 GTK#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17999059/

相关文章:

linux - 结合ccze和grep?

java - 如何查询 servlet 容器以从 ServletContextListener 获取有效 URL?

javascript - Rails 从本地环境变量中删除端口?

c# - 为什么 RESX 编辑器在 Xamarin Studio 社区中对我不起作用

java - 找到重叠部分的最大数量

c# - 将 C# 转换的 base64 存储为 SQL Server varbinary(max)

java - Network Service Discovery android教程报错: Service lost, Phone turns OFF

c# - InvalidOperationException : type 'System.String' referenced from scope '' , 但未定义

linux - Mercurial 和 Hudson 的网络托管。我可以安装 Mercurial 吗

c++ - 如何在mmap中使用PERF_SAMPLE_READ