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

 

Dimming the background by Alex Yakhnin

posted @ 2010-10-10 16:16  黎波  阅读(2385)  评论(11编辑  收藏  举报