Программа вывода текста вдоль кривой линии

Автор: Пользователь скрыл имя, 15 Декабря 2010 в 18:21, курсовая работа

Описание работы

Для разработки программы использован язык программирования высокого уровня: С#.

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

Во втором разделе приведено описание метода представления траектории, вдоль которой выводится текст на экран.

Третий раздел посвящён разработке программы вывода текста вдоль кривой на языке C#.

Результатом работы стала программа, которая выводит строку текста вдоль кривой, которая задана мышкой.

Работа содержит 1 файл

Программа вывода текста вдоль кривой линии.doc

— 71.00 Кб (Скачать)

 Элемент  управления Label в основном используется  для отображения пользователю текстовой информации только для чтения. Так, для отображения информационной строки рядом с элементом управления часто применяют надписи, Например First Name – рядом с элементом управления Text Box, предназначенным для имени пользователя. Надписи можно также использовать с целью указаний клавиш быстрого вызова для других элементов управления.

Текст, отображаемый в надписи, задаётся в её свойстве Text. Чтоб надпись автоматически подстраивала свои размеры под размеры текста, её свойство AutoSize нужно задать значение True. Если AutoSize присвоено значение False, задать размер надписи можно, сместив края элемента управления в конструкторе. Для лучшего понимания работы элементов Label и TextBox.

Я написал  программу, которая выводит текст  в форме. Текст вводится в TextBox и выводится в Label(код программы приведен в приложение).   

3.2 Структура  программы

Работа программы  состаит из следующих этапов:

Во-первых, создается само окно, в котором  будет происходить действие. С  помощью набора инструментов, прилагающихся к windows application, создается окно и кнопка, при нажатии которой все и будет происходить.

Во-вторых, нарисовать линию, вдоль которой  будет выводиться текст.

В-третьих, вывести сам текст.

Для всего  этого мне понадобится класс Graphics, который  является стандартным классом в библиотеке System.Drawing. С помощью методов этого класса я рисую кривую, а также отображаю текст, вдоль кривой. Для отображения текста мне также нужна библиотека System.Collections для запоминания точек кривой.  

Выводы:

Результатом моей курсовой стала написанная программа  написана на C# выводящая текст вводимый пользователем вдоль кривой.  

Список Литературы:

Агуров П.В. «C# Сборник рецептов – СПб.: БХВ-Петербург, 2007.»

Шилдт Герберт  «Полный справочник по C#.: Пер с англ. – М.: Издательский дом «Вильямс»

Чарльс Петцольд «Программирование для Microsoft Windows на C#» 1, 2 том.

В. В. Лабор  «Visual C# Создание приложений для Windows»  
 

Приложение

Текст программы  выводящей текст вдоль кривой

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Drawing.Drawing2D;

using System.Collections;   

namespace Form2

{   

public partial class Form2 : Form   

{       

private int index;        

public bool drawPen;        

Point[] al = new Point[999];        

Point pr;       

int numpoint = 0;       

public Point PreviousPoint;        

int numsim = 0;       

public Form2()       

{           

InitializeComponent();            

index = 0;       

}       

public void Form2_MouseDown(object sender, MouseEventArgs e)//Cобытие нажатия унопки  мыши, если кнопка нажата drawPen = true;        

{           

drawPen = true;       

}       

private void Form2_MouseUp(object sender, MouseEventArgs )//если кнопка не нажата то drawPen = false;       

{           

drawPen = false;       

}       

public void Form2_MouseMove(object sender, MouseEventArgs e)//Событие перемещение  мыши       

{           

if (drawPen)           

{               

al[numpoint++] = new Point(e.X, e.Y);// если drawPen = true; то точка  запоминается в массиве и идёт  запоминание следующей точки               

if (numpoint > 1)//если это уже не первая  запоминаемая точка, то можду ними ресуется прямая               

{                   

Graphics g = Graphics.FromHwnd(this.Handle);                    

Pen blackPen = new Pen(Color.Red, 1);                   

g.DrawLine(blackPen, al[numpoint - 2], al[numpoint - 1]);               

}           

}       

}       

//Создаём  обект TextBox в который бдет вводиться  текст       

public void TextBoxDemo()        

{           

TextBox txtbox = new TextBox();           

txtbox.Parent = this;            

txtbox.Location = new Point(Font.Height, Font.Height);           

txtbox.Size = new Size(ClientSize.Width - 2 * Font.Height, Font.Height);           

txtbox.Anchor = AnchorStyles.Right;     

        txtbox.TabIndexChanged += new EventHandler(txtbox_TextChanged);       

}       

private void txtbox_TextChanged(object obj, EventArgs e)//Событие   изменения текста в TextBox       

{           

//Создаём  обект Label каторый будет выводить  символы вдоль кривой           

Label label = new Label();           

label.Parent = this;                

Point temp;               

while (true)//цикл  защиты от налаживания двух  соседних символов               

{                   

temp = (Point)al[numsim];                    

if (temp.X == 0 && temp.Y == 0)//проверка координат если  они (0;0) выдаёт сообщение об ошибке                       

MessageBox.Show("Error");                    

if (Math.Abs(pr.X - temp.X) > 3 && Math.Abs(pr.Y - temp.Y) > 9)// проверяет  чему равна разница X и Y координат  между двумя соседними точками                    

{                       

break;//если  она удовлетворяет условие то  программа переходит к отображению  символа                   

}                   

numsim++;//если  не удовлетворяет то проверяется  следующа точка               

}               

pr = (Point)al[numsim];// запоминает точку где в последний рас выводился символ           

label.Location = al[numsim++];//выберает  следующую точка для отображения     

        label.AutoSize = true;           

TextBox txtbox = (TextBox)obj;            

label.Text = txtbox.Text[index++].ToString();//выводит на экран последний символ вводимый в TextBox       

}   

}

}    
 
 

Программа выдающая информацию о нажатой кнопке мыши

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;   

namespace WindowsFormsApplication5

{   

public partial class Form1 : Form   

{       

public Form1()       

{           

InitializeComponent();        

}         

private void Form1_MouseDown(object sender, MouseEventArgs e)       

{           

string text;           

MouseButtons button;            

button = e.Button;            

if (button = MouseButtons.Left)            

{               

text = "левую";            

}           

else if (button = MouseButtons.Right)           

{               

text = "правую";            

}           

else           

               text = "среднюю";            

}           

string message="вы  нажали"+text+"кнопку мыш в координатах:\n"+"x:="+e.X.ToString()+"\n"+"y:="+e.Y.ToString();            

MessageBox.Show(message);        

}   

}

 

Программа вывода текста на экран  

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;   

namespace WindowsFormsApplication3

{   

public partial class NextBoxDemo : Form   

{       

public Label label;        

public NextBoxDemo()        

{                                  

// создание  текстовой строки           

Text = "Пример 2";           

TextBox txtbox = new TextBox();           

txtbox.Parent = this;            

txtbox.Location = new Point(Font.Height, Font.Height);           

txtbox.Size = new Size(ClientSize.Width - 2 * Font.Height, Font.Height);           

txtbox.Anchor = AnchorStyles.Right;            

txtbox.TextChanged += new EventHandler(txtbox_TextChanged);                                    

// создание  метки           

Label label =new Label();            

label.Parent=this;            

label.Location=new Point(Font.Height,3*Font.Height);           

label.AutoSize = true;          

}       

void txtbox_TextChanged(object sender, EventArgs e)      

  {           

TextBox txtbox = (TextBox)sender;            

label.Text = txtbox.Text;        

   }

}

Информация о работе Программа вывода текста вдоль кривой линии