Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компьютерная графика, мультимедиа и игры на Vis...doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
1.92 Mб
Скачать

Глава 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();

}

Глава 8. Рисование текста и печать текстового файла

Листинг 8.1. Код для рисования горизонтального текста.

private void Form1_Paint(object sender, PaintEventArgs e)

{

//Объявляем переменную myString и присваиваем значение:

string myString = "Visual Studio";

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

Font myFont = new Font("Arial", 30);

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

SolidBrush myBrush = new SolidBrush(Color.Black);

//Задаем координаты начала текста:

float x = 5.0f;

float y = 50.0f;

//Рисуем горизонтальный текст кистью myBrush:

e.Graphics.DrawString(myString, myFont, myBrush, x, y);

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

myFont.Dispose();

myBrush.Dispose();

}

Листинг 8.2. Строки для рисования вертикального текста.

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

StringFormat myFormat = new StringFormat(

StringFormatFlags.DirectionVertical);

//Рисуем вертикальный текст кистью myBrush:

e.Graphics.DrawString(myString, myFont, myBrush,

x, y, myFormat);

Листинг 8.3. Считывание текстового файла.

System.IO.StreamReader myPrintFile;

Font myPrintFont;

private void button1_Click(object sender, EventArgs e)

{

string myPrintPath = Environment.GetFolderPath(

Environment.SpecialFolder.Desktop);

myPrintFile =

new System.IO.StreamReader(myPrintPath +

@"\myText.txt");

myPrintFont = new Font("Times New Roman", 12);

printDocument1.Print();

myPrintFile.Close();

}

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

Листинг 8.4. Печать текстового файла.

private void printDocument1_PrintPage(object sender,

System.Drawing.Printing.PrintPageEventArgs e)

{

float yPos = 0f;

int counter = 0;

float leftMargin = e.MarginBounds.Left;

float topMargin = e.MarginBounds.Top;

string line = null;

float linesPerPage = e.MarginBounds.Height /

myPrintFont.GetHeight(e.Graphics);

while (counter < linesPerPage)

{

line = myPrintFile.ReadLine();

if (line == null)

{

break;

}

yPos = topMargin + counter *

myPrintFont.GetHeight(e.Graphics);

e.Graphics.DrawString(line, myPrintFont,

Brushes.Black, leftMargin, yPos,

new StringFormat());

counter++;

}

if (line != null)

{

e.HasMorePages = true;

}

}

Проверяем в действии созданную нами программу для печати на принтере текстового файла. Строим и запускаем программу: Build, Build Solution; Debug, Start Without Debugging. Мы увидим форму Form1 в режиме выполнения. Щелкаем кнопку Print. Принтер печатает заданный текстовый файл. По этой методике мы можем распечатывать из Visual Studio различные текстовые файлы с различным расширением.

Мы закончили часть книги с общими методиками проектирования различных изображений и методиками печати изображений и текстовых файлов на принтере.