Затемнение фона в WM приложении

Оригинал: https://blogs.msdn.com/priozersk/archive/2009/03/31/dimming-the-background.aspx

На днях мой заказчик спросил меня, как можно сделать в его Windows Mobile приложении эффект затемняющегося фона при показе окна сообщения (MessageBox). В принципе, это достаточно несложно сделать, используя метод DrawAlpha класса GraphicsExtender, как я рассказывал об это в этом вебкасте. Взгляните на этот отрывок кода:

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();

 }

Написанный выше код является перегруженным методом OnPaint класса BackgroundForm, который я добавил в свой демонстрационный проект. Я установил свойство этой формы FormBorderStyle в None, а WindowState в Maximized, чтобы она отображалась на полный экран.

И теперь, перед отображением окна сообщения (MessageBox) нужно показать форму BackroundForm:

BackgroundForm form = new BackgroundForm();

  form.Show();

  MessageBox.Show(txtMessage.Text);

  form.Close();

 

И вот результат:

Скачать пример.

Перевел: Антонов Алексей.