Лекция 1. Основы графики.ppt
- Количество слайдов: 18
Кафедра «Автоматизированные станочные системы» Dept. Of Automated Manufacturing Systems Основы работы с графикой 2 семестр, лекция 1 Троицкий Д. И. Информатика 220200 2 семестр 1
Основные сведения о компьютерной графике GDI – Graphics Device Interface Соотношение сторон: 640 800 1024 480 600 768 4: 3 Цветовая глубина – бит/пиксел pixel 8 бит на канал 3 цветовых канала 24 бит=16, 7 млн. цветов 16 бит на точку 1 цветовой канал 8 бит на точку 1 цветовой канал Троицкий Д. И. Информатика 220200 2 семестр 2 1 бит на точку 1 цветовой канал
Цветовые каналы = RGB R=G=B=0 – черный R=G=B=255 – белый R=G=B – серый Получение сведений о графическом режиме Встроенный объект Screen типа TScreen Основные свойства: Width – ширина экрана в пикселах; Height – высота экрана в пикселах; Desktop. Width – ширина виртуального рабочего стола в пикселах; Desktop. Height – высота виртуального рабочего стола в пикселах; Pixels. Per. Inch – разрешение экрана, точек на дюйм. procedure TForm 1. Button 1 Click(Sender: TObject); begin Label 1. Caption: =Int. To. Str(Screen. Width)+'x'+ Int. To. Str(Screen. Height)+', '+ Int. To. Str(Screen. Pixels. Per. Inch)+'dpi' end; Троицкий Д. И. Информатика 220200 2 семестр 3
Свойства прозрачности формы Альфа-канал – дополнительный канал цветности, отвечающий за отсутствие цвета (прозрачность) Свойство Alpha. Blend (Boolean) включает/выключает режим прозрачности всей формы, а свойство Alpha. Blend. Value (BYTE) задает уровень прозрачности. Alpha. Blend. Value=255 - форма полностью непрозрачна Alpha. Blend. Value=0 форма невидима Плавное появление формы: procedure TForm 1. Form. Activate(Sender: TObject); var i: byte; begin Alpha. Blend: =True; for i: =0 to 127 do begin Alpha. Blend. Value: =i*2; Repaint end; Троицкий Д. И. Информатика 220200 2 семестр 4
Задание прозрачности отдельных компонентов Чтобы сделать прозрачным отдельные компоненты на форме, следует использовать свойства формы Transparent. Color (Boolean) и Transparent. Color. Value (TColor). Если Transparent. Color=True, то все компоненты на форме, имеющие цвет, равный заданному в свойстве Transparent. Color. Value, будут прозрачными. Троицкий Д. И. Информатика 220200 2 семестр 5
Начинаем рисовать Наш холст – Canvas, свойство многих объектов (например, Image) Самое простое – вставить статическую картинку из файла Основные форматы графических файлов: формат ani – растровый анимированный курсор. В компоненте TImage отобразится только первый кадр анимации; формат gif – растровый формат, широко используемый в Интернете. Недостаток – поддерживаются только 256 цветов. Достоинство – возможность задания прозрачных областей и возможность создания так называемых анимированных gif-файлов, состоящих из последовательности кадров (как и для ani-файлов, TImage будет отображать только первый кадр); Троицкий Д. И. Информатика 220200 2 семестр 6
формат bmp – ветеран, существует еще со времен операционной системы DOS. Это растровый формат с различными вариантами цветовой глубины (от черно-белой картинки до 16 млн. цветов) и с возможностью сжатия информации без потерь. Прозрачные области не поддерживаются; формат wmf (Windows metafile) – векторный формат, специально разработанный для Windows. Внутри это последовательность команд отрисовки изображения. Компактен, отлично подходит для вывода чертежей, схем, графиков. Формат wmf понимают практически все программы: Word, Visio, Corel, Компас, Auto. CAD и многие другие; формат emf (enhanced metafile) – улучшенная версия wmf. формат jpeg (Joint Photographic Experts Group) – особый растровый формат. В нем реализовано сжатие изображения с потерями. Один из главных недостатков – отсутствие возможности создавать прозрачные области; формат ico – растровый формат хранения значков ("иконок") Windows фиксированного размера 16 х16 или 32 х32 пиксела. Троицкий Д. И. Информатика 220200 2 семестр 7
Графический файл загружается в компонент Image при помощи его свойства Picture. При этом содержимое файла физически копируется и добавляется в exe – файл нашей программы. Поэтому нежелательно таким образом загружать многомегабайтные картинки: программа разрастается и начинает заметно тормозить. Внешний вид загруженной картинки Center - центрирование изображения Stretch - если True, то картинка автоматически масштабируется в размер компонента Image Auto. Size - противоположна Stretch: при Auto. Size=True компонент Image принимает размер загруженной картинки. Transparent – если True, то при загрузке картинки с прозрачными областями (в форматах gif, wmf, emf) сквозь них будет виден фон. Proportional - указывает, можно ли искажать пропорции загруженной картинки или нет. Incremental. Display - включает режим постепенного вывода больших изображений. При этом картинка выводится на экран по частям, чтобы пользователь видел, что процесс идет, и программа не зависла. Троицкий Д. И. Информатика 220200 2 семестр 8
Программное рисование Обращение к отдельным пикселам: Canvas. Pixels[x, y] начало координат Х Y Рисуем звездное небо: var i: word; begin with Image 1. Canvas do Цвет кисти Закрашенный begin прямоугольник Brush. Color: =cl. Black; Fill. Rect(0, 0, Image 1. Width, Image 1. Height)); for i: =1 to 1000 do Pixels[random(Image 1. Width), random(Image 1. Height)]: = cl. White end; Троицкий Д. И. Информатика 220200 2 семестр 9
Тонкая настройка цветов Стандартные цвета задаются константами: cl. Aqua, cl. Black, cl. Blue, cl. Dk. Gray, cl. Fuchsia, cl. Gray… Если стандартных не хватает: Функция RGB(красный, зеленый, синий) R=78 G=190 B=224 Brush. Color: =RGB(79, 190, 224) Троицкий Д. И. Информатика 220200 2 семестр 10
Инструменты рисования: Pen – рисует контуры Brush – заливает цветом области внутри контуров WITH Image 1. Canvas DO BEGIN Brush. Color: =cl. White; Pen. Color: =cl. Black; Fill. Rect(Image 1. Client. Rect); Move. To(0, Image 1. Height DIV 2); Line. To(Image 1. Width, Image 1. Height DIV 2); Move. To(Image 1. Width DIV 2, 0); Line. To(Image 1. Width DIV 2, Image 1. Height); Brush. Color: =cl. Green; Rectangle(Image 1. Width DIV 2 - 50, Image 1. Height DIV 2 - 50, Image 1. Width DIV 2 + 50, Image 1. Height DIV 2 + 50); Brush. Color: =cl. Red; Ellipse(Image 1. Width DIV 2 - 10, Image 1. Height DIV 2 - 10, Image 1. Width DIV 2 + 10, Image 1. Height DIV 2 + 10); END Троицкий Д. И. Информатика 220200 2 семестр 11
Основные методы рисования: Троицкий Д. И. Информатика 220200 2 семестр 12
Основные методы рисования: Arc(X 1, Y 1, X 2, Y 2, X 3, Y 3, X 4, Y 4: Integer) – дуга эллипса, вписанного в прямоугольник с координатами диагонали X 1, Y 1, X 2, Y 2. Дуга отрисовывается против часовой стрелки от точки пересечения эллипса с прямой (центр эллипса)-(x 3, y 3) до точки (центр эллипса)-(x 4, y 4). arc(100, 200, 100, 100) Троицкий Д. И. Информатика 220200 2 семестр 13
Стили заливки: Brush. Style: =… Троицкий Д. И. Информатика 220200 2 семестр 14
Стили контуров: Pen. Style: =… ps. Solid сплошная линия ps. Dash пунктирная линия ps. Dot линия из точек ps. Dash. Dot штрих – пунктирная линия ps. Dash. Dot линия "тире – точка" ps. Clear линия не рисуется (например, для построения объекта без контура) Троицкий Д. И. Информатика 220200 2 семестр 15
Построение геометрических фигур Зафиксируем на холсте одну вершину треугольника в точке с произвольными координатами a 1, b 1. Найдем косинус угла CAB по теореме косинусов: по теореме синусов dy 1 - cos 2 (ÐCAB ) = AC sin 90 0 Троицкий Д. И. Информатика 220200 2 семестр 16
Рисование на самой форме with Form 1. Canvas do begin Pen. Color: =cl. White; Pen. Width: =20; Move. To(0, 0); Line. To(Self. Client. Width, Self. Client. Height); Move. To(Self. Client. Width, 0); Line. To(0, Self. Client. Height) end Для определения размеров формы используются свойства формы Client. Width и Client. Height, а не просто Width и Height. Дело в том, что свойства Width и Height содержат полный размер формы, включая полоску заголовка, а Client. Width и Client. Height – лишь размеры так называемой клиентской части формы, на которой можно размещать другие объекты. Троицкий Д. И. Информатика 220200 2 семестр 17
Проблема – картинка на форме пропадает при ее перетаскивании procedure Draw; begin with Form 1. Canvas do begin Pen. Color: =cl. White; Pen. Width: =20; Move. To(0, 0); Line. To(Form 1. Client. Width, Form 1. Client. Height); Move. To(Form 1. Client. Width, 0); Line. To(0, Form 1. Client. Height) end; Событие формы On. Paint: procedure TForm 1. Form. Paint(Sender: TObject); begin Draw end; Троицкий Д. И. Информатика 220200 2 семестр 18


