带有GTK#的C#透明背景



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

我搜索了如何使背景透明,但我没有运气;我还搜索了如何更改背景颜色,希望能找到TransparenceKey的等价物,但再次失败。

最重要的是:如何使背景透明?

这是我的应用程序的代码;它是使用Visual Studio 2010和.Net Framework 4客户端配置文件编写的

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’

我搜索了更多关于GTK的信息,但它与.Net中的TransparenceKey没有任何100%的等价性,我用半透明背景进行了一些测试。但这并不是我想要的方式。WinForms和GTK的工作方式非常不同(我知道这是显而易见的),所以我将结束这个问题。

如果我浪费了你的时间,我很抱歉。。。

最新更新