Глава 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 различные текстовые файлы с различным расширением.

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

Часть III. Методология вычислений на основе Visual C# с использованием эффектов анимации

Глава 9. Методика создания вычислительной системы

Листинг 9.1.Код для мигания названия переключателя.

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

bool myText = false;

private void timer1_Tick(object sender, EventArgs e)

{

//Вводим анимацию:

if (myText == false)

{

//Выводим название переключателя:

this.radioButton3.Text = "&3. Calculator";

//Изменяем значение myText на противоположное:

myText = true;

}

else

{

//Удаляем название переключателя:

this.radioButton3.Text = "";

//Изменяем значение myText на противоположное:

myText = false;

}

}

В этом коде в строке (radioButton3->Text = "";) между кавычками мы можем записать другой текст, который будет чередоваться с первым названием.

Аналогично можно также дописать код, чтобы сделать анимационными сразу несколько переключателей. Задавая в панели Properties с заголовком Timer1 различные значения свойству Interval (а выше мы задали 1000 миллисекунд или 1 секунду), можно изменять частоту мигания, чтобы это мигание было, например, приятным для наших глаз. Методика приостановки и возобновления анимации после щелчков по кнопке или по самой формы уже была приведена выше.


Наши рекомендации