Рисование простых линий на форме или элементах управления и печать этих линий
Листинг 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 принтер печатает только одно изображение без формы и элементов управления.
Таким образом, мы закончили разработку общей методики построения на экране монитора и печати на принтере разнообразных изображений.