Разработка модуля имитации утопленного и выпуклого текста

Утопленный и выпуклый текст, текст с тенью как разновидности объемного текста. Выбор степени эффекта. Структура модуля ExTXT. Назначение модуля, назначение и выполнение головной программы. Описание применения модуля. Описание контрольного примера.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 31.12.2013
Размер файла 924,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

утопленный выпуклый текст

Введение

1. Теоретическая часть

1.1 Идея реализации

1.2 Утопленный текст

1.3 Выпуклый текст

1.4 Выбор степени эффекта

1.5 Структура модуля ExTXT

2. Описание модуля

2.1 Назначение модуля

2.2 Назначение головной программы

2.3 Выполнение программы

3. Описание применения модуля

4. Описание контрольного примера

5. Список использованной литературы

Приложение. Тексты программных единиц

Список поставляемых файлов

Введение

В настоящее время 3D текст очень популярен и широко используется в различных графических редакторах. Видов 3D текста довольно много: текст с тенью, объемный текст, с бликами и без и т. д. В данном курсовом проекте я рассматриваю два вида объемного текста. Это утопленный и выпуклый текст.

Такой текст может применяться для создания каких-либо надписей. Также эти виды объемного текста могут найти следующее применение. При оформлении кнопок, утопленный текст может показывать, что она нажата, а выпуклый - что ее можно нажать.

1. Теоретическая часть

1.1 Идея реализации

Утопленный текст, выпуклый, текст с тенью это все разновидности объемного текста.

Как реализовать в Delphi модуль имитации утопленного и выпуклого текста, чтобы введенная пользователем строка текста выводилась на экран с соответствующим эффектом? Для решения этой задачи в данном курсовом проекте использовалась следующая идея.

Простейший объемный текст можно представить как один и тот же текст, отображенный в несколько слоев, со смещением и разного цвета. Пример такого текста представлен на рисунке 1.

Рис. 1. Объемный текст

Здесь мы видим 2 слоя текста: один серого цвета, другой белого. Текст белого цвета смещен относительно текста серого цвета вправо и вниз на некоторое число пикселей. Но это простой объемный текст. С утопленным и выпуклым текстом все чуть-чуть сложней, хотя идея остается абсолютно той же.

Чтобы сделать текст утопленным надо попытаться задать такое количество слоев текста и такие смещения их друг относительно друга, чтобы выводимый текст был, как бы вдавлен в фон. То есть необходимо сделать текст с тенью, но чтобы тень падала внутрь буквы. Аналогично надо поступить и с выпуклым текстом. Необходимо добиться того чтобы выводимый текст казался приподнятым относительно фона.

1.2 Утопленный текст

Итак, нам необходимо задать слои текста, их цвет и смещения их друг относительно друга.

Для имитации утопленного текста я использовал следующие слои текста:

1) боковой №1;

2) боковой №2;

3) внутренний.

Рассмотрим эти слои поподробней. Боковой слой должен быть темного цвета, например черного. Пользователь может выбрать цвет этого слоя. Именно этот слой и создает эффект вдавливания текста в фон. Он расположен с левой стороны утопленной буквы. Внутренний слой задает цвет текста в целом. Может быть любого цвета. Пользователь может выбрать цвет этого слоя. На рисунке 2 представлен утопленный текст с обозначенными слоями.

Но для имитации утопленного текста мало задать слои и их цвета. Необходимо также указать смещения данных слоев друг относительно друга. Для этого рассмотрим холст, на который будет помещаться выводимый утопленный текст. Таким холстом в Delphi является Canvas. Для того чтобы что-то изобразить на Canvas нужно уметь задавать координаты. Для этого с Canvas связывается система координат следующего вида:

Рис. 2. Система координат Canvas

Тень внутрь текста создается темным цветом. Внутренний слой более светлым. На рисунке 3 представлен утопленный текст.

Рис. 2. утопленный текст

1.3 Выпуклый текст

Эффект выпуклого текста создавался аналогично эффекту утопленного текста. С той разницей, что теперь тень падает с правой стороны буквы. Внутренний слой при этом остался на своем месте. Он задает лишь цвет выводимого текста.

Таким образом, смещения слоев друг относительно друга при имитации выпуклого текста имеют следующие значения:

Вследствие того, что создание эффекта утопленного текста аналогично созданию эффекта выпуклого текста, в разрабатываемом модуле содержится всего одна процедура, в которую передаются координаты слоев, соответствующие тому или иному типу эффекта и той или иной степени эффекта.

На рисунке 3 представлен выпуклый текст.

Рис. 3. выпуклый текст

1.4 Выбор степени эффекта

В любой программе, связанной с графикой предусмотрены возможности изменения степени того или иного эффекта. Например, изменение толщины кисти в Paint или изменение резкости в Photoshop. В разрабатываемом мной модуле также предусмотрена возможность увеличения степени вдавливания или, наоборот, выдавливания текста.

Эта возможность достигается с помощью изменения величины смещения слоев. В данном модуле предусмотрено лишь 2 уровня эффекта. При попытке задать 3-ий уровень эффектов, выводимый текст не был похож на выпуклый или утопленный, поэтому в модуле предусмотрены только два уровня.

На рисунке 4 изображены:

А) Утопленный текст 1-го и 2-го уровней;

Б) Выпуклый текст 1-го и 2-го уровней.

А)

Б)

Рис. 4. Утопленный и выпуклый текст двух уровней

1.5 Структура модуля ExTXT

Модуль имитации утопленного и выпуклого текста ExTXT состоит из описания переменных, определяющих внешний вид выводимого текста:

XPos: integer;

FontSize: integer; //размер текста

FontStyle: integer; // стиль текста

level: integer; //степень эффекта

moda: integer; // эффект (утопленный/выпуклый)

dx1, dy1, dx2, dy2, dx3, dy3: integer; // координаты, задающие смещение внутреннего

// и бокового слоев

ColNorm, ColLight: TColor; //внутренний и боковой цвета выводимого текста

Canv: TCanvas;

Из процедуры, которая анализирует введенные пользователем параметры выводимого текста:

Procedure FontDevelop (Canv: TCanvas) ; (см. Приложения)

Из процедуры, которая и отвечает за формирование и вывод текста с эффектом. Рассмотрим ее подробнее:

Procedure UText (Canv: TCanvas; str: string; deltax1, deltay1, deltax2, deltay2,

deltax3, deltay3: integer;

LeftColor, MiddleColor: TColor) ;

Var

i: integer;

begin

Xpos: =20;

with Canv do begin

for i: =1 to length (str) do

begin

If Xpos<650 then

begin

Font. Color: =LeftColor;

TextOut (XPos+deltax1, YPos+deltay1, str[i]) ;

Font. Color: =clWhite;

Textout (XPos+deltax2, YPos+deltay2, str[i]) ;

Font. Color: =MiddleColor;

TextOut (XPos+deltax3, YPos+deltay3, str[i]) ;

XPos: =PenPos. X;

end;

end;

end;

end.

Рассмотрим, как работает этот модуль в основной программе. Размер текста, стиль текста, степень эффекта, эффект, цвета слоев выбираются при помощи раскрывающихся списков. Выбранные параметры анализируются с помощью процедуры Procedure FontDevelop (Canv: TCanvas). В процедуру UText передаются следующие параметры:

1) строка текста, которую пользователь вводит в специальную форму, в данном случае это компонент Memo;

2) Смещения слоев друг относительно друга;

3) Цвета слоев.

Каждая буква рисуется отдельно.

2. Описание модуля

2.1 Назначение модуля

Разрабатываемый модуль ExTXT имитации утопленного и выпуклого текста предназначен для использования в более крупных проектах и разработках приложений. Данный модуль может использоваться в тех проектах, в которых необходимо тот или иной текст сделать утопленным или выпуклым.

2.2 Назначение демонстрационной программы

Входящая в данный курсовой проект программа Extruded Text предназначена для демонстрации возможностей модуля имитации утопленного и выпуклого текста ExTXT. Рассмотрим, как она работает.

Пользователь, с помощью раскрывающихся списков, выбирает желаемые параметры выводимого текста (размер, цвет и т. д.). Затем эти параметры анализируются и объединяется в одной процедуре FontDevelop (см. Приложения). Далее в обработчике OnClick кнопки “Сделать” применяются процедуры FontDevelop и UText, которая и формирует текст с эффектом.

Также следует отметить, что данная программа предназначена лишь для демонстрации работы разрабатываемого модуля, и функции сохранения и открытия из файла в ней не предусмотрены.

2.3 Выполнение программы

После запуска программы откроется окно, представленное на рисунке 5.

Рис. 5. Окно программы Extruded Text

Главное меню программы состоит из 2 пунктов.

Выход: выход из программы и закрытие окна.

Справка: вывод справочной системы.

На левой панели расположены раскрывающиеся списки, с помощью которых задаются параметры выводимого текста.

На правой панели пользователь может выбрать тип эффекта и ввести желаемую строку текста в форму ввода. Нажав кнопку “Сделать”, в прямоугольную область, расположенную над панелями, выведется уже обработанный текст. Под данной прямоугольной областью есть кнопка “Очистить”, с помощью которой эта форма очищается

В ходе выполнения программы, пользователь может менять несколько раз параметры выводимого текста, тип эффекта. Перед каждым новым выводом обработанного текста, прямоугольная область автоматически очищается.

Для более наглядного представления выводимого текста рекомендуется выбирать боковой цвет намного темнее, чем внутренний. Например, боковой цвет - черный, а внутренний - серый.

3. Описание применения модуля

Разрабатываемый модуль может применяться в более крупных проектах, например в графических или усовершенствованных текстовых редакторах, где нужна функция преобразования текста в утопленный или выпуклый. Такая функция может потребоваться для создания красиво оформленных надписей, эскизов и т. д.

Модуль применяется следующим образом.

Размер текста, стиль текста, степень эффекта, эффект, цвета слоев выбираются при помощи раскрывающихся списков или программно. Выбранные параметры анализируются с помощью процедуры Procedure FontDevelop (Canv: TCanvas). В процедуру UText передаются следующие параметры:

1) строка текста;

2) координаты трех слоев, которые определяются выбранными пользователем типом эффекта и его уровнем;

3) а также цвета бокового слоя №1 и внутреннего слоя.

4. Описание контрольного примера

В данном курсовом проекте контрольным примером является приложение Extruded Text. Это приложение демонстрирует работу модуля имитации утопленного и выпуклого текста ExTXT.

После запуска приложения появится окно программы, которое приведено на рисунке 5. Рассмотрим несколько вариантов работы данного приложения, то есть рассмотрим работу программы при различных значениях параметров.

Рис. 6. Контрольный пример 1

Рис. 7. Контрольный пример 2

Рис. 8. Контрольный пример 3

5. Список использованной литературы

1. ЕСПД. ГОСТы 19. 101, 19. 105, 19. 106, 19. 502-19. 505,. 19. 701;

2. Учебник по Delphi - Электрон. Учебник. - Режим доступа: http://shiva16.narod.ru/Unit24.htm;

3. Самоучитель по Delphi 7 для профессионалов - Использование графики - Электрон. Учебник. - Режим доступа: http://www.programmon.ru/Delphi7prof/10.html;

4. Самоучитель по Delphi 6 - Модули - Электрон. Учебник. - Режим доступа: http://www.programmon.ru/Delphi6/15.html.

Приложение

Исходные тексты программных единиц

Модуль ExTXT.

unit ExTXT;

interface

Uses

Graphics;

Var

XPos, i: integer;

FontSize: integer; //размер текста

FontStyle: integer; // стиль текста

level: integer; //степень эффекта

moda: integer; // эффект (утопленный/выпуклый)

dx, dy, d: integer; // координаты, задающие смещение внутреннего

// и бокового слоев

ColNorm, ColLight: TColor; //внутренний и боковой цвета выводимого текста

Canv: TCanvas;

Procedure UText (Canv: TCanvas; str: string; deltax, deltay, delta: integer;

LeftColor, MiddleColor: TColor) ;

Procedure FontDevelop (Canv: TCanvas) ;

implementation

Const

YPos = 60;

//Объемный текст

Procedure UText (Canv: TCanvas; str: string; deltax, deltay, delta: integer;

LeftColor, MiddleColor: TColor) ;

begin

Xpos: =20;

with Canv do begin

for i: =1 to length (str) do

begin

If Xpos<680 then

begin

Font. Color: =LeftColor;

TextOut (XPos, YPos, str[i]) ;

Font. Size: = Font. Size-d;

Font. Color: =MiddleColor;

TextOut (XPos+deltax, YPos+deltay, str[i]) ;

Font. Size: = Font. Size+d;

XPos: =PenPos. X;

end;

end;

end;

end;

//Параметры текста

Procedure FontDevelop (Canv: TCanvas) ;

begin

with Canv do

begin

case FontSize of

1: Font. Size: =18;

2: Font. Size: =20;

3: Font. Size: =24;

4: Font. Size: =32;

5: Font. Size: =36;

6: Font. Size: =40;

7: Font. Size: =44;

8: Font. Size: =50;

9: Font. Size: =60;

end;

case FontStyle of

1: Font. Style: =[ ];

2: Font. Style: =[fsBold];

3: Font. Style: =[fsItalic];

end;

Case moda of

1: Case level of

1:

begin

dx: =1; dy: =1;

d: =1;

end;

2:

begin

dx: =2; dy: =3;

d: =2;

end;

end;

2: Case level of

1:

begin

dx: =-1; dy: =0;

d: =1;

end;

2:

begin

dx: =-2; dy: =1;

d: =1;

end;

end;

end;

end;

end;

end.

Приложение Extruded Text.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, StdCtrls, ExtCtrls, ShellApi, ExtDlgs, JPEG, GDIPAPI, GDIPOBJ, GDIPUTIL,

ComCtrls, ExTXT;

type

TForm1 = class (TForm)

MainMenu1: TMainMenu;

Memo1: TMemo;

Button3: TButton;

Button4: TButton;

Button1: TButton;

Panel1: TPanel;

OpenPictureDialog1: TOpenPictureDialog;

ComboBox1: TComboBox;

ColorBox1: TColorBox;

ColorBox2: TColorBox;

N1: TMenuItem;

N2: TMenuItem;

StaticText1: TStaticText;

ComboBox2: TComboBox;

StaticText2: TStaticText;

StaticText3: TStaticText;

StaticText4: TStaticText;

StaticText5: TStaticText;

ComboBox3: TComboBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

RadioGroup1: TRadioGroup;

Panel2: TPanel;

procedure FormCreate (Sender: TObject) ;

procedure Button1Click (Sender: TObject) ;

procedure Button3Click (Sender: TObject) ;

procedure Button4Click (Sender: TObject) ;

procedure ComboBox1Change (Sender: TObject) ;

procedure ColorBox1Change (Sender: TObject) ;

procedure ColorBox2Change (Sender: TObject) ;

procedure FormPaint (Sender: TObject) ;

procedure N4Click (Sender: TObject) ;

procedure N1Click (Sender: TObject) ;

procedure N2Click (Sender: TObject) ;

procedure ComboBox2Change (Sender: TObject) ;

procedure ComboBox3Change (Sender: TObject) ;

procedure RadioGroup1Click (Sender: TObject) ;

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

Rect1: TRect;

encoderClsid: TGUID;

Image: TGPImage;

i: integer;

implementation

{$R *. dfm}

//Выбор размера выводимого текста

procedure TForm1. ComboBox1Change (Sender: TObject) ;

begin

Case Combobox1. ItemIndex of

0: FontSize: =1;

1: FontSize: =2;

2: FontSize: =3;

3: FontSize: =4;

4: FontSize: =5;

end;

end;

//Выбор стиля

procedure TForm1. ComboBox2Change (Sender: TObject) ;

begin

Case ComboBox2. ItemIndex of

0: FontStyle: =1;

1: FontStyle: =2;

2: FontStyle: =3;

end;

end;

procedure TForm1. FormCreate (Sender: TObject) ;

begin

case combobox3. ItemIndex of

0: level: =1;

1: level: =2;

end;

Case RadioGroup1. ItemIndex of

0: moda: =1;

1: moda: =2;

end;

i: =0;

//Выделение цветов для заполнения внутренней области букв

with colorbox1. Items do

while i<=Count - 1 do

if (Strings[i]<>'clSilver') and (Strings[i]<>'clRed') and (Strings[i]<>'clOlive')

and (Strings[i]<>'clAqua') and (Strings[i]<>'clFuchsia')

and (Strings[i]<>'clYellow') then colorbox1. Items. Delete (i)

else inc (i) ;

//Выделение боковых цветов букв

with colorbox2. Items do

while i<=Count - 1 do

if (Strings[i]<>'clBlack') and (Strings[i]<>'clMaroon') and (Strings[i]<>'clGreen')

and (Strings[i]<>'clNavy') and (Strings[i]<>'clTeal')

and (Strings[i]<>'clPurple') then colorbox2. Items. Delete (i)

else inc (i) ;

Form1. Canvas. Brush. Color: =clBlack;

Form1. Canvas. Brush. Style: = bsClear;

//Установка шрифта Arial

with Form1. Canvas. Font do begin

Name: = 'Arial';

end;

end;

//Объемный текст (утопленный или выпуклый)

procedure TForm1. Button1Click (Sender: TObject) ;

begin

with Form1. Canvas do begin

PatBlt (Form1. Canvas. Handle, 7, 7, 470, 40, WHITENESS) ;

Form1. Canvas. Brush. Style: = bsClear;

FontDevelop (Form1. Canvas) ;

Utext (Canvas, Memo1. Text, dx1, dy1, dx2, dy2, dx3, dy3, colLight, colNorm) ;

end;

end;

//Очистка формы ввода

procedure TForm1. Button3Click (Sender: TObject) ;

begin

Memo1. Clear;

end;

//Очистка холста

procedure TForm1. Button4Click (Sender: TObject) ;

begin

PatBlt (Form1. Canvas. Handle, 7, 7, 470, 40, WHITENESS) ;

end;

//Выбор внутреннего цвета

procedure TForm1. ColorBox1Change (Sender: TObject) ;

begin

ColNorm: = ColorBox1. Selected;

end;

//Выбор бокового цвета

procedure TForm1. ColorBox2Change (Sender: TObject) ;

begin

ColLight: =ColorBox2. Selected;

end;

//Отрисовка рамки для вывода текста

procedure TForm1. FormPaint (Sender: TObject) ;

begin

Canvas. Brush. Color: =clWhite;

Form1. Canvas. Rectangle (6, 6, 478, 48) ;

end;

procedure TForm1. N4Click (Sender: TObject) ;

begin

Form1. Close;

end;

procedure TForm1. N1Click (Sender: TObject) ;

begin

Form1. Close;

end;

procedure TForm1. N2Click (Sender: TObject) ;

begin

ShellExecute (Handle, 'open', 'Справка. chm', nil, nil, SW_SHOW) ;

end;

//Выбор уровня эффекта

procedure TForm1. ComboBox3Change (Sender: TObject) ;

begin

Case ComboBox3. ItemIndex of

0: level: =1;

1: level: =2;

end;

end;

//Выбор эффекта

procedure TForm1. RadioGroup1Click (Sender: TObject) ;

begin

Case RadioGroup1. ItemIndex of

0: moda: =1;

1: moda: =2;

end;

end;

end.

Список поставляемых файлов

Ниже приведены основные поставляемые с курсовым проектом файлы.

Демонстрационная программа

ExTXT. pas - разрабатываемый модуль;

Extruded_Text. dpr - проект Delphi;

Extruded_Text. res - файл ресурсов (содержит файл иконки) ;

Extruded_Text. exe - исполняемый файл демонстрационной программы;

Unit1. dfm - файл формы Delphi;

Unit1. pas - главный модуль;

Справка. chm - файл справки;

Модуль (ExTXT. pas) - разрабатываемый модуль;

Extruded_Text - исполняемый файл демонстрационной программы;

Размещено на Allbest.ru


Подобные документы

  • Структурная диаграмма программного модуля. Разработка схемы программного модуля и пользовательского интерфейса. Реализация программного модуля: код программы; описание использованных операторов и функций. Вид пользовательской формы с заполненной матрицей.

    курсовая работа [215,3 K], добавлен 01.09.2010

  • Разработка интерфейса пользователя, модуля программы, печатной формы, а также ролей и пользователей. Описание контрольного примера и порядок проведения тестирования информационной системы, требования к ней, а также ее функциональные особенности.

    курсовая работа [1,4 M], добавлен 22.03.2017

  • Проектирование модульной структуры программы сетевого мессенджера, назначение модуля "frmMsg". Разработка главной формы и интерфейса пользователя программы. Проектирование модуля формы "About". Разработка методики тестирования и отладка программы.

    курсовая работа [606,7 K], добавлен 19.01.2012

  • Структурная диаграмма программного модуля. Нахождение суммы элементов, находящихся над главной диагональю. Реализация программного модуля: код программы; описание использованных операторов и функций. Особенности тестирования программного модуля.

    курсовая работа [146,6 K], добавлен 01.09.2010

  • Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.

    курсовая работа [81,7 K], добавлен 18.08.2014

  • Постановка задачи для модуля 1С. Бухгалтерия 3.0. Анализ существующих разработок в области интегрирования данных. Информационное обеспечение модуля "Связь 1С Предприятия 8.2. с "Казначейством". Программное и технологическое обеспечение данного модуля.

    курсовая работа [1,5 M], добавлен 10.06.2013

  • Обзор средств программирования. Описание и свойства языка Delphi. Основания для разработки, ее назначение, предъявляемые требования, стадии разработки. Описание схемы основного модуля, процедур, программы. Используемые технические и программные средства.

    курсовая работа [42,8 K], добавлен 25.02.2012

  • Разработка функциональной и структурной схемы программного средства. Реализация основного модуля программы. Реализация модуля печати и модуля обновлений. Изучение взаимодействия информационных технологий, методов их интеграции и обмена данными.

    дипломная работа [3,2 M], добавлен 27.10.2017

  • Разработка СУБД - программного модуля для систематизации, хранения и обработки сведений о работниках лаборатории. Технологический процесс машинной реализации задачи, составление алгоритма, описание переменных процедур и функций. Листинг программы.

    курсовая работа [1,7 M], добавлен 11.01.2013

  • Проектирование модуля регистрации документов. Анализ предметной области, спецификация требований. Построение диаграммы прецедентов Анализ архитектуры модуля в "OpenText Content Server 16.2". Разработка программы регистрации документов, ее тестирование.

    дипломная работа [1,9 M], добавлен 25.08.2017

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.