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

       

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


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

Содержание раздела