Автор: Пользователь скрыл имя, 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;
}
}
}
Информация о работе Программа вывода текста вдоль кривой линии