Главная страница
Навигация по странице:

  • Практическое занятие 8 Канва и работа с ней Цель занятия

  • Методические указания для подготовки к практическим занятиям. По курсу Информационные технологии в электроэнергетике


    Скачать 3.37 Mb.
    НазваниеМетодические указания для подготовки к практическим занятиям. По курсу Информационные технологии в электроэнергетике
    Дата21.12.2022
    Размер3.37 Mb.
    Формат файлаdoc
    Имя файлаPraktika_po_informatsionnym_tekhnologiam.doc
    ТипМетодические указания
    #856058
    страница6 из 10
    1   2   3   4   5   6   7   8   9   10

    Вопросы для самопроверки

    1. Назовите 5 типов грунтов.

    2. В каких единицах измеряется удельное сопротивление грунта?

    3. Какое удельное сопротивление имеют чернозёмы, и суглинки?

    4. Как влажность грунта изменяет его удельное сопротивление?

    5. Что такое заземлитель?

    6. Чем отличаются искуственные и естественные заземлители?

    7. Перечислите типы простых искуственных заземлитетелей.

    8. Как сопротивление заземлителя на частоте 50 Гц зависит от удельного сопротивления грунта?

    9. Как сопротивление заземлителя на частоте 50 Гц зависит от диаметра заземлителя?

    10. Как сопротивление заземлителя на частоте 50 Гц зависит от длины заземлителя?

    11. Как сопротивление заземлителя на частоте 50 Гц зависит от формы заземлителя?

    12. Что такое глобальные переменные программы?

    13. То такое локальные переменные процедуры?

    14. В какой части кода программы находится раздел описания глобальных переменных (общих для всех процедур)?

    15. В какой части кода программы находится раздел описания локальных переменных процедуры?

    16. Можно ли сделать компонент, положенный на форму, невидимым в режиме исполнения программы?

    17. Как сделать компонент, положенный на форму, невидимым в режиме исполнения программы?

    18. Как создать заголовок компонента при запуске программы на исполнение?

    19. Как изменить значение удельного сопротивления грунта в момент выбора типа грунта?

    20. Как проверить правильность соответствия типа грунта, задаваемого из компонента ComboBox значению удельного сопротивления?

    21. Как создать заготовку процедуры, которая начинает исполняться в момент изменения значения компонента ComboBox?

    22. Каким образом можно вызывать появление на форме появления рисунка заземлителя, который соответствует выбранному типу в компонента ComboBox?

    23. Каким образом можно сделать так, чтобы на форме были видны только компоненты ввода значений переменных для выбранного типа заземлителя в компоненте ComboBox?

    24. Для чего нужен компонент CheckBox?

    25. Как создать заготовку процедуры, которая будет выполняться при нажатии компонента CheckBox?

    26. Если в поле текст компонента LabeledEdit с заголовком «Unom, кВ» будет записана строка 110, то чему будет равно значение переменной Unom в программе?

    27. Какой код нужно записать, чтобы значение, записанное в поле текст компонента LabeledEdit с заголовком «Unom, кВ» было присвоено переменной Unom в программе?

    28. Чем различаются функции FloatToStr() и FloatToStrF()?

    29. Что записывается в круглых скобках в функции FloatToStrF()?

    30. Запишите функцию вывода в поле Memo значения переменной R, если её величина не превышает 50000, а точность определения не более двух знаков после запятой.

    31. Как предотвратить ошибочный ввод переменной, если она вводится с компонента LabeledEdit, а её величина не может быть меньше 5?

    32. Как предотвратить ошибочный ввод переменной, если она вводится с компонента LabeledEdit, а её величина не может быть больше 15?


    Практическое занятие 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

    Свойство (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 shln;

    и они эквивалентны умножению или целочисленному делению (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

    Заменить в программе рисование прямоугольника на рисование эллипса. Создать несколько вложенных друг в друга соосных эллипсов (кругов) различного размера, цвета окантовки и заполнения.
    1   2   3   4   5   6   7   8   9   10


    написать администратору сайта