Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

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

2017-05-23 272
Глава 6. Рисование сложных линий и печать всей формы как снимка экрана 0.00 из 5.00 0 оценок
Заказать работу

Вверх
Содержание
Поиск

 

Листинг 6.1. Код для рисования прямоугольника.

 

private void Form1_Paint(object sender, PaintEventArgs e)

{

//Задаем цвет и толщину пера:

Pen myPen1 = new Pen(Color.Black, 3);

//Объявляем объект myRectangle и создаем экземпляр этого объекта:

Rectangle myRectangle = new Rectangle(10, 15, 150, 200);

//Рисуем фигуру:

e.Graphics.DrawRectangle(myPen1, myRectangle);

//Высвобождаем память, выделенную объекту myPen1:

myPen1.Dispose();

}

 

Листинг 6.2. Код для рисования кривых линий.

 

private void Form1_Paint(object sender, PaintEventArgs e)

{

//Задаем цвет и толщину перьев:

Pen myPen1 = new Pen(Color.Black, 3);

Pen myPen2 = new Pen(Color.Black, 1);

 

//Объявляем объекты и создаем экземпляры этих объектов:

Point myPoint1 = new Point(50, 50);

Point myPoint2 = new Point(100, 25);

Point myPoint3 = new Point(200, 5);

Point myPoint4 = new Point(275, 50);

Point myPoint5 = new Point(300, 150);

Point myPoint6 = new Point(350, 200);

Point myPoint7 = new Point(250, 250);

Point[] myCurvePoints =

{

myPoint1,

myPoint2,

myPoint3,

myPoint4,

myPoint5,

myPoint6,

myPoint7

};

//Рисуем линии:

e.Graphics.DrawLines(myPen1, myCurvePoints);

e.Graphics.DrawClosedCurve(myPen2, myCurvePoints);

//Высвобождаем память от перьев myPen1, myPen2:

myPen1.Dispose();

myPen2.Dispose();

}

 

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

 

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

}

 

Листинг 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);

}

 


 

Глава 7. Рисование заполненных фигур и печать всей формы с предварительным просмотром

 

Листинг 7.1. Код для рисования прямоугольника.

 

private void Form1_Paint(object sender, PaintEventArgs e)

{

//Задаем тип и цвет кисти:

SolidBrush myBrush =

new SolidBrush(System.Drawing.Color.Black);

//Объявляем объект myRectangle и создаем экземпляр этого объекта:

Rectangle myRectangle = new Rectangle(10, 15, 150, 200);

//Рисуем и заполняем фигуру:

e.Graphics.FillRectangle(myBrush, myRectangle);

//Высвобождаем память, выделенную объекту myBrush:

myBrush.Dispose();

}

В этом же шаблоне комментируем одну строку для заполнения прямоугольника и записываем другую строку для заполнения эллипса (вписанного в прямоугольник).

 

Листинг 7.2. Строка для рисования эллипса.

 

e.Graphics.FillEllipse(myBrush, myRectangle);

 

Листинг 7.3. Вызов методов для захвата изображения и вывода Print preview.

 

private void button1_Click(object sender, EventArgs e)

{

//Захватываем изображение:

myCaptureScreen();

//Выводим панель Print preview:

printPreviewDialog1.Show();

}


 


Поделиться с друзьями:

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.009 с.