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