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


Глава Методика проектирования неподвижных и подвижных плоских фигур - часть 4


    myForm1.Show();

    //Рисуем графику на форме Form1:

    while (myForm1.Created)

    {

        myForm1.myRendering();

        Application.DoEvents();

    }

}

Листинг 44.5. Метод для фотографирования клиентской области формы.

[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 = this.CreateGraphics();

      Size s = this.Size;

      myMemoryImage = new Bitmap(s.Width, s.Height,

                                                 myGraphics);

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

}

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

Листинг 44.6. Код для рисования изображения в памяти компьютера.

private void printDocument1_PrintPage(object sender,

      System.Drawing.Printing.PrintPageEventArgs e)

{

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

}

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

Листинг 44.7. Код для печати изображения на принтере.

private void button1_Click(object sender, EventArgs e)




Начало  Назад  Вперед



Книжный магазин