前幾天處理一個比較有意思的需求,客戶要求在螢幕滾動顯示一些提示資訊,而同時還要考慮到客戶做交易時的螢幕重新整理問題,螢幕重新整理後滾動資訊不能重新開始,而是繼續重新整理前的操作。
這樣一來就無法使用javascript的走馬燈【marquee】效果了。為了不對已有程式做太大改動,無奈之下只好寫一外掛,專門做滾動字幕顯示。現將源碼公開,以方便有相同需要的朋友。
該程式設計有幾點需要注意:
(1)建立Form時應該override CreateParams CreateParams
View Code
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x8000000; //使其在建立時處於非啟用狀態
return cp;
}
}
(2)建立時設定Form屬性
View Code
//設定表單內容
this.BackColor = Color.Fuchsia;
this.TransparencyKey = Color.Fuchsia;
this.TopMost = true; //置頂
//this.WindowState = FormWindowState.Maximized;
this.ShowInTaskbar = false; //取消在工作列中顯示
this.FormBorderStyle = FormBorderStyle.None;//取消標題列、邊框等
//this.StartPosition = FormStartPosition.CenterScreen;//表單位置
(3)要考慮到多螢幕的問題
View Code
/// <summary>
/// 在主屏顯示
/// </summary>
private void PositionOnSecondaryScreen()
{
Screen secondaryScreen = null;
if (Screen.AllScreens.Length == 1)
{
secondaryScreen = Screen.PrimaryScreen;
}
else
{
foreach (Screen screen in Screen.AllScreens)
{
if (screen.Primary == false)
{
secondaryScreen = screen;
break;
}
}
}
this.Location = secondaryScreen.WorkingArea.Location;
this.Size = secondaryScreen.WorkingArea.Size;
}
螢幕繪製字元其實很簡單,就是在指定位置DrawString,但在繪製之前最好能MeasureString來測算要繪製的字元長度