Рисование простых линий на форме или элементах управления и печать этих линий

Листинг 5.1. Код для рисования прямой линии.

private void Form1_Paint(object sender, PaintEventArgs e)

{

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

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

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

e.Graphics.DrawLine(myPen, 10, 15, 100, 120);

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

myPen.Dispose();

}

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

private void Form1_Paint(object sender, PaintEventArgs e)

{

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

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

//Рисуем эллипс лица:

e.Graphics.DrawEllipse(myPen, 0, 0, 200, 220);

//Рисуем закрытый глаз как дугу:

e.Graphics.DrawArc(myPen, 35, 35, 35, 35, 180, -180);

//Рисуем открытый глаз как эллипс:

e.Graphics.DrawEllipse(myPen, 120, 35, 35, 35);

//Рисуем нос как линию (сплайн) Безье:

e.Graphics.DrawBezier(myPen, 100, 60, 120, 100,

90, 120, 80, 100);

//Рисуем рот как канонический сплайн:

Point[] apt = new Point[4];

apt[0] = new Point(60, 140);

apt[1] = new Point(140, 140);

apt[2] = new Point(100, 180);

apt[3] = new Point(60, 140);

e.Graphics.DrawCurve(myPen, apt, 0, 3, 0.9f);

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

myPen.Dispose();

}

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

private void button1_Click(object sender, EventArgs e)

{

//Передаем объекту printDialog1 информацию об объекте

//printDocument1 при помощи свойства Document:

printDialog1.Document = printDocument1;

//Выводим стандартную панель Print при помощи метода

//ShowDialog() для задания параметров печати

//и после щелчка OK на панели Print печатаем документ

//при помощи метода Print():

if (printDialog1.ShowDialog() == DialogResult.OK)

printDocument1.Print();

}

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

Private Sub Button3_Click(ByVal sender As System.Object, _

ByVal e As EventArgs) Handles Button3.Click

'Передаем объекту PrintDialog1 информацию об объекте

'PrintDocument1 при помощи свойства Document:

PrintDialog1.Document = PrintDocument1

'Выводим панель Print при помощи функции ShowDialog

'для задания параметров и вызываем процедуру Print():

If PrintDialog1.ShowDialog() = DialogResult.OK Then

PrintDocument1.Print()

End If

End Sub

Листинг 5.5. Код на прежнем Visual C++ (2002-2004 годов) для печати.

private:

System::Void button3_Click(System::Object * sender,

System::EventArgs * e)

{

//Передаем объекту printDialog1 информацию об объекте

//printDocument1 при помощи свойства Document:

printDialog1->Document = printDocument1;

//Выводим стандартную панель Print при помощи метода

//ShowDialog() для задания параметров печати

//и печатаем документ после щелчка OK на панели Print

//при помощи метода Print():

if (printDialog1->ShowDialog() == DialogResult::OK)

printDocument1->Print();

}

Листинг 5.6. Код на новом Visual C++ 2005 для печати изображения.

private:

System::Void button3_Click(System::Object^ sender,

System::EventArgs^ e)

{

//Передаем объекту printDialog1 информацию об объекте

//printDocument1 при помощи свойства Document:

printDialog1->Document = printDocument1;

//Выводим стандартную панель Print при помощи метода

//ShowDialog() для задания параметров печати

//и печатаем документ при помощи метода Print():

printDialog1->ShowDialog();

printDocument1->Print();

}

Если мы не желаем видеть перед печатью стандартную панель Print, то компонент PrintDialog нам не потребуется, а в шаблон обработчика щелчка по кнопке вместо кода на листинге 5.3 записываем только одну строку кода:

printDocument1.Print();

Проверяем в действии созданную нами программу для печати на принтере любых изображений. Для этого получаем на экране монитора (по описанной выше методике) заданное изображение и щелкаем кнопку Print.

Появляется стандартная панель Print (рис. 5.5), на которой мы выбираем (или оставляем по умолчанию) принтер и задаем параметры печати. Например, можно изменить ориентацию печати и вместо Portrait (Портрет) выбрать переключатель Landscape (Ландшафт). После щелчка кнопки Печать (Print) или OK принтер печатает только одно изображение без формы и элементов управления.

Предлагаю ознакомиться с аналогичными статьями: