Автор: Пользователь скрыл имя, 15 Декабря 2010 в 18:21, курсовая работа
Для разработки программы использован язык программирования высокого уровня: С#.
В первом разделе  работы описаны методы и модели отображения  кривых и текста средствами векторной графики.
Во втором разделе приведено описание метода представления  траектории, вдоль которой выводится текст на экран.
Третий раздел посвящён разработке программы вывода текста вдоль кривой на языке C#.
Результатом работы стала программа, которая выводит строку текста вдоль кривой, которая задана мышкой.
Элемент управления Label в основном используется для отображения пользователю текстовой информации только для чтения. Так, для отображения информационной строки рядом с элементом управления часто применяют надписи, Например First Name – рядом с элементом управления Text Box, предназначенным для имени пользователя. Надписи можно также использовать с целью указаний клавиш быстрого вызова для других элементов управления.
Текст, отображаемый 
в надписи, задаётся в её свойстве 
Text. Чтоб надпись автоматически 
Я написал 
программу, которая выводит текст 
в форме. Текст вводится в 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_
}
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(
}
}
}    
 
 
Программа выдающая информацию о нажатой кнопке мыши
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.
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_
// создание метки
Label label =new Label();
label.Parent=this;
 label.Location=new 
Point(Font.Height,3*Font.
 label.AutoSize = true;
         
}
void txtbox_TextChanged(object sender, EventArgs e)
{
TextBox txtbox = (TextBox)sender;
label.Text = txtbox.Text;
}
}
}
Информация о работе Программа вывода текста вдоль кривой линии