ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Практическое занятие 8Канва и работа с ней Цель занятия Знакомство студентов со свойствами и методами класса 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
Рис. 8.1. Варианты TBrushStyle Рис. 8.2. Расположение точек к таб. 8.2
Таблица 8.2. Некоторые методы класса TCanvas
В среде Дельфи используются заранее предопределённые цвета, некоторые из которых обозначаются следующим образом: clNone (чёрный), clAqua, clBlack (чёрный), clBlue (синий), clCream (сливки), clDkGray (тёмно серый), clFuchsia, clGray (серый), clGreen (зелёный), clLime (светло-зелёный), clLtGray (светло серый), clMaroon (бордовый), clMedGray (средне серый), clMoneyGreen, clNavy (тёмно-синий), clOlive (оливковый зелёный), clPurple (пурпурный), clRed (красный), clSilver (серебряный), clSkyBlue (небесно-голубой), clTeal, clWhite (белый), clYellow (жёлтый). В разделе описания переменных процедуры button1Click опишите следующие переменные: x 0, y 0, x 1, y 1, x 2, y 2, x 3, y 3, x 4, y 4: 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; Задайте координаты начала рисования линий: x 0:=100; y 0:=50; переместите перо на указанные координаты и начертите линию длиной 150 точек методами из табл. 8.2 - moveTo (x 0, y 0); LineTo (x 0+150, y 0);. Выведите справа от линии с отступом от конца линии на 30 точек и вверх на размер шрифта строку с номером цвета: TextOut (x 0+180, y 0- Font.Size,'этот цвет имеет номер '+ IntToStr (pen.Color)+' ('+ IntToHex (myColor,6)+')');. Запустите программу на исполнение и проверьте её работу. Измените цвет пера и шрифта на зелёный, переместите перо в точку с координатами x 0, y 0+25, начертите линию и выведите надпись: myColor:= clGreen; y 0:= y 0+25; pen.Color:= myColor; Font.Color:= pen.Color; MoveTo (x 0, y 0); LineTo (x 0+150, y 0); TextOut (x 0+180, y 0- 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*$ff 00+ ib*$ff 0000);. Задайте цвет кисти и способ заполнения фигур: 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 ColorDialog 1.Execute then Brush.Color:= ColorDialog 1.Color;. Запустите программу и проверьте её работу. Запишите последовательность команд определения процентного содержания красного цвета в выбранном цвете с использованием логических двоичных команд сдвига вправо shr и слево shl. Эти команды применимы только к целочисленным переменным, имеют вид: y:= x shr n; y:= x shl n; и они эквивалентны умножению или целочисленному делению (div) на 2n. Определение процентного содержания красного цвета можно записать так: x 0:= Brush.Color shl 24; y 0:= x 0 shr 24; ir: = y 0/$ ff *100; LabeledEdit1.Text:= FloatToStrF (ir, ffFixed,5,2);. Для зелёного цвета набор команд будет выглядеть так: x 0:= Brush.Color shl 16; y 0:= x 0 shr 24; iG: = y 0/$ ff *100; LabeledEdit2.Text:= FloatToStrF (iG, ffFixed,5,2);. Для синего цвета набор команд будет выглядеть так: x 0:= Brush.Color shr 16; iB: = x 0/$ ff *100; LabeledEdit 3 .Text:= FloatToStrF (iB, ffFixed,5,2);. Выбирая различные варианты цвета из палитры определить интенсивность основных цветов в красном, оранжевом, жёлтом, зелёном, голубом, синем и фиолетовом цвете. Чем различаются оттенки жёлтого цвета? Создать и сохранить три дополнительных цвета, которых нет в основном наборе цветов компонента ColorDialog. Задание 4 Заменить в программе рисование прямоугольника на рисование эллипса. Создать несколько вложенных друг в друга соосных эллипсов (кругов) различного размера, цвета окантовки и заполнения.
Не нашли, что искали? Воспользуйтесь поиском:
|