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

       

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


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

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