我用 .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/