русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Цель занятия


Дата добавления: 2014-12-01; просмотров: 630; Нарушение авторских прав


Знакомство студентов со свойствами и методами класса TCanvas (канва). Прорисовка различных аппаратов высокого напряжения. Знакомство с цветом объектов и способами его задания

Задание 1

ЗапуститеДельфи. Создайте заголовок формы «Работа с цветным карандашом (pen) и кистью (brush)». Сохраните программу в папке практика 8. Проверьте число сохранённых файлов (должно быть не менее 6).

Положите на форму компонент Panel, удалите её заголовок и измените цвет на clSkyBlue.

Положите на панель следующие компоненты: а) одну из трёх типов кнопок запуска Button и измените её заголовок на «Старт»; б) три компонента LabeledEdit из дополнительной палитры компонентов и измените их заголовки на следующие: «Красный, %», «Синий, %» и «Зелёный, %». В каждое поле текст запишите 100. Метку с заголовком TBrushStyle. Компонент ComboBox и создайте его список в соответствии со списком TBrushStyle табл. 8.1. Измените размеры панели так, чтобы компоненты занимали большую часть площади панели, а саму панель с компонентами переместите в нижний левый угол формы.

Поместите в правый верхний угол формы компонент ColorDialog (из набора Dialogs).

Двойным щелчком на компоненте button1 (Старт) создайте процедуру button1Click.

Ознакомьтесь со свойствами (табл. 8.1) и методами (табл. 8.2) класса TCanvas. Обратите внимание на способ определения цвета в системе цветовых координат RGB.

Таблица 8.1. Свойство класса TCanvas

Свойство (property) Описание
Brush: TBrush Кисть, определяет цвет и стиль заполнения фигур: TBrushStyle = (bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal, bsBDiagonal, bsCross, bsDiagCross);
ClipRect:TRect Прямоугольник, в котором размещается рисунок
CopyMode:TCopyMode Тип соотношения растрового рисунка и фона
Font:TFont Тип шрифта
Pen:TPen Тип пера (карандаша) – характер линий при прорисовке фигур: TPenStyle = (psSolid, psDash, psDot, psDashDot, psDashDotDot, psClear)
PenPos:TPoint Координаты пера относительно верхнего левого края канвы
Pixels[x,y:integer]:TColor Массив пикселов канвы

 



Рис. 8.1. Варианты TBrushStyle Рис. 8.2. Расположение точек к таб. 8.2

 

 

Таблица 8.2. Некоторые методы класса TCanvas

Метод (Procedure) Описание
MoveTo(x,y:integer) Перемещает карандаш (перо) в положение x,y без вычерчивания линии
LineTo(x,y:integer) Чертит линию от текущей позиции пера в точку (x,y)
Rectangle(x1, y1, x2, y2,: integer) Чертит прямоугольник (x1, y1) –(x2, y2), где x1, y1 – координаты верхнего левого угла, а x2, y2 – нижнего правого.
Ellipse(x1, y1, x2, y2,: integer) Чертит эллипс вписанный в прямоугольник (x1, y1) –(x2, y2).
Arc(x1, y1, x2, y2, x3, y3, x4, y4: integer) Чертит против часовой стрелки дугу эллипса вписанного в прямоугольник (x1, y1) –(x2, y2). Начало - пересечение эллипса и прямой, проходящей из центра эллипса в точку (x3, y3). Конец - пересечение эллипса и прямой, проходящей из центра эллипса в точку (x4, y4).
Chord(x1, y1, x2, y2, x3, y3, x4, y4: integer) Чертит против часовой стрелки сегмент эллипса вписанного в прямоугольник (x1, y1) –(x2, y2). Начало - пересечение эллипса и прямой, проходящей из центра эллипса в точку (x3, y3). Конец - пересечение эллипса и прямой, проходящей из центра эллипса в точку (x4, y4). Начало и конец соединяются прямой.
Pie(x1, y1, x2, y2, x3, y3, x4, y4: integer) Чертит против часовой стрелки сектор эллипса вписанного в прямоугольник (x1, y1) –(x2, y2). Начало - пересечение эллипса и прямой (рисуется), проходящей из центра эллипса в точку (x3, y3). Конец - пересечение эллипса и прямой (рисуется), проходящей из центра эллипса в точку (x4, y4).
Poligon(points:array of Tpoint) Чертит пером многоугольник по точкам, заданным в массиве точек (points)

В среде Дельфи используются заранее предопределённые цвета, некоторые из которых обозначаются следующим образом: clNone (чёрный), clAqua, clBlack (чёрный), clBlue (синий), clCream (сливки), clDkGray (тёмно серый), clFuchsia, clGray (серый), clGreen (зелёный), clLime (светло-зелёный), clLtGray (светло серый), clMaroon (бордовый), clMedGray (средне серый), clMoneyGreen, clNavy (тёмно-синий), clOlive (оливковый зелёный), clPurple (пурпурный), clRed (красный), clSilver (серебряный), clSkyBlue (небесно-голубой), clTeal, clWhite (белый), clYellow (жёлтый).

В разделе описания переменных процедуры button1Click опишите следующие переменные: x0, y0, x1, y1, x2, y2, x3, y3, x4, y4: integer; myColor, myColorBrush: TColor; IR, IG, IB: Real;.

В теле процедуры button1Click создайте заготовку блока упрощенной работы с методами и свойствами канвы:

with Canvas do

begin

end; { Canvas }

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

В тело созданного блока запишите определение выбранного Вами цвета, а также цвета, толщины и типа карандаша:

myColor:= clRed; // Приписание Вашему цвету значения красного цвета;

pen.Color:= myColor; // Приписание цвету карандаша Вашего цвета;

pen.Width:=4; // Приписание ширине значения 4;

pen.Style:=psSolid; // Приписание стилю черчения карандашом

// черчения сплошной линией;

Задайте цвет и размер шрифта:

Font.Color:= pen.Color; Font.Size:=14;

Задайте координаты начала рисования линий: x0:=100; y0:=50; переместите перо на указанные координаты и начертите линию длиной 150 точек методами из табл. 8.2 - moveTo(x0, y0); LineTo(x0+150, y0);.

Выведите справа от линии с отступом от конца линии на 30 точек и вверх на размер шрифта строку с номером цвета:

TextOut(x0+180,y0-Font.Size,'этот цвет имеет номер '+IntToStr(pen.Color)+' ('+IntToHex(myColor,6)+')');.

Запустите программу на исполнение и проверьте её работу.

Измените цвет пера и шрифта на зелёный, переместите перо в точку с координатами x0, y0+25, начертите линию и выведите надпись:

myColor:= clGreen; y0:=y0+25;

pen.Color:= myColor; Font.Color:=pen.Color;

MoveTo(x0,y0); LineTo(x0+150,y0);

TextOut(x0+180,y0-Font.Size, 'этот цвет имеет номер '+IntTostr(myColor) +' ('+IntToHex(myColor,6)+')');

Запустите программу на исполнение и проверьте её работу.

Скопируйте несколько раз (не менее 3) вышеприведённые 4 строки и измените значение переменной myColor на какие либо разные цвета. Запустите программу на исполнение и проверьте её работу.

Закомментируйте текст программы начиная со следующей строки после описания цвета и размера шрифта до закрывающей скобки end; { Canvas }.

Задание 2

Сведения о цвете. Цвет (Color) относится к целочисленным переменным типа comp c диапазоном значений –(263+1) ÷ 263-1. Полной интенсивности красного цвета (Red) соответствует число $000000FF, зелёного (Green) - $0000FF00, синего (Blue) - $00FF0000 . Остальные цвета можно получить при смешивании (сложении) этих трёх цветов с учётом их интенсивности, которая может изменяться от 0 до 1 (0 - 100 %) (палитра RGB). Так белый цвет соответствует полной интенсивности (100 % каждого) всех этих цветов - $00FF0000+$0000FF00+$000000FF = $00FFFFFF. Черный цвет соответствует нулевой интенсивности всех цветов - $00000000.

Введите в программу значения интенсивностей красного, зелёного и синего цветов по образцу:

ir:=StrToFloat(LabeledEdit1.Text)/100;

Создайте Ваш цвет кисти, смешивая три основных цвета:

myColorBrush:=Round(ir*$ff+ig*$ff00+ib*$ff0000);.

Задайте цвет кисти и способ заполнения фигур:

Brush.Color:= myColorBrush; Brush.Style:= TBrushStyle(ComboBox1.itemindex);

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

Rectangle(50,50,500,300);.

Запустите программу на исполнение. Перед нажатием кнопки «Старт» не забудьте выбрать стиль кисли. Обратите внимание на различие цветов контура и заполнения.

Не выходя из режима исполнения, измените цвет заполнения на чисто красный и способ заполнения (см. табл. 8.1). Посмотрите, что получится.

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

Brush.Color:=clwhite; Brush.Style:=bsSolid; Rectangle(50,50,500,300);.

Запустите программу и убедитесь, что наложения цветов и способов заполнения не происходит.

Измените цвет заполнения на чисто зелёный и способ заполнения.

Измените цвет заполнения на чисто синий и способ заполнения.

Меняя интенсивность основных цветов, наблюдайте за изменением цвета заполнения прямоугольника. Перепробуйте не менее 10 различных вариантов цветов заполнения.

Задание 3

Вставьте перед командой рисования прямоугольника строку определения цвета заполнения с использованием диалога выбора цвета ColorDialog:

if ColorDialog1.Execute then Brush.Color:= ColorDialog1.Color;.

Запустите программу и проверьте её работу.

Запишите последовательность команд определения процентного содержания красного цвета в выбранном цвете с использованием логических двоичных команд сдвига вправо shr и слево shl. Эти команды применимы только к целочисленным переменным, имеют вид:

y:=x shr n; y:=x shl n;

и они эквивалентны умножению или целочисленному делению (div) на 2n. Определение процентного содержания красного цвета можно записать так:

x0:= Brush.Color shl 24; y0:= x0 shr 24; ir:=y0/$ff*100;

LabeledEdit1.Text:=FloatToStrF(ir,ffFixed,5,2);.

Для зелёного цвета набор команд будет выглядеть так:

x0:= Brush.Color shl 16; y0:= x0 shr 24; iG:=y0/$ff*100;

LabeledEdit2.Text:=FloatToStrF(iG, ffFixed,5,2);.

Для синего цвета набор команд будет выглядеть так:

x0:= Brush.Color shr 16; iB:= x0/$ff*100;

LabeledEdit3.Text:=FloatToStrF(iB, ffFixed,5,2);.

Выбирая различные варианты цвета из палитры определить интенсивность основных цветов в красном, оранжевом, жёлтом, зелёном, голубом, синем и фиолетовом цвете. Чем различаются оттенки жёлтого цвета? Создать и сохранить три дополнительных цвета, которых нет в основном наборе цветов компонента ColorDialog.

Задание 4

Заменить в программе рисование прямоугольника на рисование эллипса. Создать несколько вложенных друг в друга соосных эллипсов (кругов) различного размера, цвета окантовки и заполнения.

 



<== предыдущая лекция | следующая лекция ==>
Цель занятия | Цель занятия


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.248 сек.