Windows Mobile 实现半透明背景的消息框
如下图所示,半透明的背景使得消息框的内容更加醒目。
如何实现呢?首先,透明背景其实是一个FormBorderStyle为FormBorderStyle.None,WindowsState为FormWindowState.Maximized的全屏窗体。
其次,半透明的效果是通过重写窗体的OnPaint事件处理函数,调用API函数AlphaBlend绘制出来的,这个函数在Windows Mobile 5.0及以上的平台支持。
protected override void OnPaint(PaintEventArgs e)
{
// Create a temp bitmap
Bitmap dimBackGround = new Bitmap(this.Width, this.Height);
Graphics gxTemp = Graphics.FromImage(dimBackGround);
// Color it black
gxTemp.Clear(Color.Black);
// Draw it with alpha transparency
e.Graphics.DrawAlpha(dimBackGround, 100, 0, 0);
// Clean up
gxTemp.Dispose();
dimBackGround.Dispose();
}
最后,使用消息框的代码如下所示:
BackgroundForm form = new BackgroundForm();
form.Show();
MessageBox.Show(txtMessage.Text);
form.Close();
为了能重用代码,最好封装一个新的MessageeBox类,例如叫MsgBox。
源码下载:DimmingBackgroundTest.zip