我用 .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";
}
}
}
}
在此先感谢您的帮助!