Шрифт:
Листинг 13.5. Код формы, демонстрирующий использование прозрачности
//----------------------------------------------------------------
//Размеры наших битовых образов и экранного изображения PictureBox
//----------------------------------------------------------------
const int bitmap_dx = 200;
const int bitmap_dy = 100;
//-------------------------------------------------
//Создает и прорисовывает изображение заднего плана
//-------------------------------------------------
System.Drawing.Bitmap m_backgroundBitmap;
void CreateBackground {
if (m_backgroundBitmap == null) {
m_backgroundBitmap =new Bitmap(bitmap_dx, bitmap_dy);
}
//Делаем битовую карту белой
System.Drawing.Graphics gfx;
gfx = System.Drawing.Graphics.FromImage(m_backgroundBitmap);
gfx.Clear(System.Drawing.Color.White);
//Рисуем текст черным
System.Drawing.Brush myBrush;
myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
for (int у = 0; у < bitmap_dy; у = у + 15) {
gfx.DrawString("I am the BACKGROUND IMAGE...hello", this.Font, myBrush, 0, у);
}
//Очистить
myBrush.Dispose;
gfx.Dispose;
}
//-------------------------------------------------
//Создает и прорисовывает изображение заднего плана
//-------------------------------------------------
System.Drawing.Bitmap m_foregroundBitmap;
void CreateForeground {
if (m_foregroundBitmap == null) {
m_foregroundBitmap = new Bitmap(bitmap_dx, bitmap_dy);
}
//Делаем всю битовую карту синей
System.Drawing.Graphics gfx;
gfx = System.Drawing.Graphics.FromImage(m_foregroundBitmap);
gfx.Clear(System.Drawing.Color.Blue);
//Рисуем несколько фигур желтым
System.Drawing.Brush yellowBrush;
yellowBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Yellow);
gfx.FillEllipse(yellowBrush, 130, 4, 40, 70);
gfx.FillRectangle(yellowBrush, 5, 20, 110, 30);
gfx.FillEllipse(yellowBrush, 60, 75, 130, 20);
//Очистить
yellowBrush.Dispose;
gfx.Dispose;
}
//-----------------------------------------------------------------
//Устанавливает размеры и местоположение PictureBox с левой стороны
//-----------------------------------------------------------------
private void SetPictureBoxDimensions {
pictureBox1.Width = bitmap_dx;
pictureBox1.Height = bitmap_dy;
pictureBox1.Left = 20;
}
//---------------------------------------------------------------------
//ОБРАБОТЧИК СОБЫТИЙ: Отобразить изображение ЗАДНЕГО ПЛАНА в PictureBox
//---------------------------------------------------------------------
private void buttonDrawBackground_Click(object sender, System.EventArgs e) {
SetPictureBoxDimensions;
CreateBackground;
pictureBox1.Image = m_backgroundBitmap;
}
//-----------------------------------------------------------------------
//ОБРАБОТЧИК СОБЫТИЙ: Отобразить изображение ПЕРЕДНЕГО ПЛАНА в PictureBox