Компьютерная графика, мультимедиа и игры на Visual C#


         

Глава Рисование сложных линий и печать всей формы как снимка экрана - часть 2


      Graphics myMemoryGraphics =

      Graphics.FromImage(myMemoryImage);

      IntPtr dc0 = myGraphics.GetHdc();

      IntPtr dc1 = myMemoryGraphics.GetHdc();

      BitBlt(dc1, 0, 0, this.ClientRectangle.Width,

            this.ClientRectangle.Height,

            dc0, 0, 0, 13369376);

            myGraphics.ReleaseHdc(dc0);

            myMemoryGraphics.ReleaseHdc(dc1);

}

Листинг 6.4. Код для рисования изображения.

private void printDocument1_PrintPage(object sender,

      System.Drawing.Printing.PrintPageEventArgs e)

{

      e.Graphics.DrawImage(myMemoryImage, 0, 0);

}

Теперь дважды щелкаем по кнопке Print (рис. 6.1) в режиме проектирования. Открывается файл Form1.cs с шаблоном, в который записываем сначала одну строку для вызова приведенного выше метода:

   myCaptureScreen();

а затем записываем код для кнопки из приведенного выше параграфа “Методика печати изображения на принтере”.

Листинг 6.5. Метод для фотографирования элемента управления PictureBox.

[System.Runtime.InteropServices.DllImport("gdi32.dll")]

public static extern long BitBlt(IntPtr hdcDest,

int nXDest, int nYDest, int nWidth, int nHeight,

IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);

private Bitmap myMemoryImage;

private void myCaptureScreen()

{

      Graphics myGraphics = pictureBox1.CreateGraphics();

      myMemoryImage = new Bitmap(

            pictureBox1.Width,

            pictureBox1.Height, myGraphics);

      Graphics myMemoryGraphics =

            Graphics.FromImage(myMemoryImage);

      IntPtr dc0 = myGraphics.GetHdc();

      IntPtr dc1 = myMemoryGraphics.GetHdc();

      BitBlt(dc1, 0, 0, pictureBox1.ClientRectangle.Width,

            pictureBox1.ClientRectangle.Height,

            dc0, 0, 0, 13369376);

      myGraphics.ReleaseHdc(dc0);

      myMemoryGraphics.ReleaseHdc(dc1);

}




Содержание  Назад  Вперед