774.12K
Категория: ПрограммированиеПрограммирование

Графика в CBuilder

1.

Графика в
CBuilder

2.

Компонент Image
На панели компонентов Additional компонент изображение представлен в виде

3.

Свойства компонента Image
Свойство
Назначение
Picture
Используется для отображения изображений. На этапе проектирования
изображение может быть выбрано в окне редактора изображений
(кнопка около свойства Picture в окне инспектора объектов)
Autosize
Значение True у этого свойства показывает, что размер компонента
будет автоматически подгоняться под размер помещенной в него
картинки
Stretch
Значение True у этого свойства показывает, что рисунок будет занимать
весь компонент. При этом возможно искажение изображения
Center
Transparent
Proportional
Значение True у этого свойства показывает, что рисунок будет
отцентрирован относительно компонента
Значение True у этого свойства показывает, что изображение становится
прозрачным. Это можно использовать для наложения изображений друг
на друга (действует только для файлов .bmp)
Значение True у этого свойства показывает, что при изменении
размеров изображения будут сохраняться пропорции

4.

Канва
Некоторые компоненты в C++ Builder имеют свойство Canvas (канва, холст)
Технология вывода графической информации основывается на приемах
работы с канвой (класс Tcanvas)
Канва представляет собой область, на которой можно рисовать или
отображать изображения
Канвой обладает форма, компонент Image, PaintBox и другие.
Каждая точка канвы имеет координаты X и Y
Система координат канвы такая же как и для любого компонента в CBuilder –
верхний левый угол имеет координаты (0, 0), ось ОY направлена вниз
Координаты измеряются в пикселях

5.

Пиксели канвы
Важнейшее свойство пикселя – его цвет
Цвет пикселя канвы определяется значением свойства Pixels. Это свойство
представляет собой двумерный массив, в котором хранится цвет каждого
пикселя канвы
Например
Image1 -> Canvas -> Pixels[x][y] = clBlue;

6.

Карандаш
Свойство Pen – карандаш позволяет определять цвет, толщину и стиль линий
Свойство
Назначение
Color
Цвет карандаша
Style
Стиль линии определяет, будет ли она
сплошной или пунктирной
Width
Толщина линии в пикселях

7.

Значения свойства Style у карандаша
Значение
psDash
Описание
Сплошная линия (установлено по
умолчанию)
Штриховая линия
psDot
Пунктирная линия
psDashDot
Штрихпунктирная линия
psDashDotDot
Линия, чередующая штрих и два
пунктира
psClear
Отсутствие линии
psSolid
Вид линии

8.

Кисть
Свойство Brush – кисть предназначено для заполнения областей заданным шаблоном
Кисть обладает свойствами Color, Style
Значение
Шаблон
Значение
bsSolid
bsClear
bsCross
bsDiagCross
bsHorizontal
bsVertical
bsBDiagonal
bsFDiagonal
Шаблон

9.

Шрифт, свойство Font
Name
Название шрифта, под которым он зарегистрирован в
Windows, например Times New Roman, Courier и прочие
Size
Высота шрифта в пикселях
Style
Стиль шрифта
Возможные значения: fsBold (полужирный); fsltalic (курсив);
fsUnderline (подчеркнутый); fsStrikeOut (зачеркнутый)
Color
Цвет

10.

Методы канвы
LineTo(x, y);
MoveTo(x, y);
Rectangle (x1, y1, x2, y2);
Ellipse(x1, y1, х2, y2);
RoundRect( x1, y1, x2, y2, x3, y3);
FloodFill(x, y, Color, FillStyle);
Рисует линию от точки, определенной свойством
PenPos до точки, указанной в качестве параметра
Устанавливает текущую позицию графического
курсора в точку, заданную в параметрах метода
Рисуется прямоугольник
Его внутренняя область заполняется в
соответствии со значением свойства Brush
Рисуется эллипс
Рисуется прямоугольник со скругленными углами
Параметры x3, y3 определяют ширину и высоту
эллипса для скругления углов
Заливка области холста, прилегающей к точке,
заданной в качестве параметра (для заполнения
заданным в Brush цветом)

11.

Методы канвы
Arc(x1,y1,х2,y2,х3,y3,х4,y4);
Рисование части эллипса
Pie(x1,y2,x2,y2,x3,y3,x4,y4);
Рисуется сектор эллипса, расположенный внутри
заданного прямоугольника
Chord(x1,y1,x2,y2,x3,y3,x4,y4);
Polygon(Points: array of TPoint, n);
Polyline(Points: array of TPoint);
TextOut(x, y, "Text");
Рисуется замкнутая фигура (сегмент), созданная
пересечением эллипса и отрезка прямой линии
(хорды)
Рисуется сложная фигура, состоящая из отрезков,
последовательно соединяющих точки,
представленные в виде массива элементов TPoint.
Внутренняя часть фигуры заполняется в соответствии
со значением свойства Brush
Метод аналогичен предыдущему, но заполнения
внутренней части фигуры не происходит
Вывод текста

12.

Эллипс
Метод Ellipse(x1, y1, х2, y2); рисует эллипс, в котором точки (x1, y1) и (x2, y2)
определяют прямоугольник, описывающий эллипс
(x1, y1)
(x2, y2)

13.

Прямоугольник со скругленными
углами
Метод RoundRect( x1, y1, x2, y2, x3, y3); рисует прямоугольник со скругленными
углами, в котором точки (x1, y1) и (x2, y2) определяют прямоугольник, а значения x3 и y3
определяют скругление
(x1, y1)
x3
y
3
(x2, y2)

14.

Части эллипса
Методы Arc, Chord и Pie имеют одинаковые параметры (x1, y1, x2, y2, x3, y3, x4, y4)
Точки (x1, y1) и (x2, y2) определяют прямоугольник, описывающий эллипс, в котором
строится дуга, сегмент или сектор
Начальная точка дуги, сегмента или сектора определяется пересечением эллипса
с прямой, проходящей через его центр и точку (x3, y3)
Конечная точка дуги, сегмента или сектора определяется пересечением эллипса с
прямой, проходящей через его центр и точку (x4, y4)
Рисование происходит от начальной точки до конечной против часовой стрелки

15.

Часть эллипса

16.

Метод FloodFill
FloodFill(x, y, Color, FillStyle);
Метод FloodFill заполняет замкнутую область на канве, содержащую внутри себя
точку с координатами x, y
Граница области заливки определяется сочетанием параметров Color и FillStyle
Если для параметра Fillstyle определить значение fsBorder, то команда будет
работать так же, как и аналогичная команда в среде BP. Будет закрашена область,
ограниченная цветом Color
Если для параметра Fillstyle определить значение fsSurface, то цвет Color
заменится, а другие цвета внутри области останутся неизменными.
Цвет и стиль, которым будет производиться заливка, определяются свойствами Brush

17.

Загрузка файла
if (OpenPictureDialog1 -> Execute()) {
String S = OpenPictureDialog1 ->FileName;
Label1 -> Caption = S;
Image1 -> Picture -> LoadFromFile(S);
}
Для того, чтобы рисунок можно было редактировать в среде CBuilder, он должен быть
формата BMP

18.

Сохранение файла
if (SavePictureDialog1 -> Execute())
{
Image1 -> Picture -> SaveToFile(SavePictureDialog1 -> FileName);
}

19.

Пути к файлам
OpenPictureDialog1 -> InitialDir =
ExtractFilePath(ParamStr(0));
SavePictureDialog1 -> InitialDir =
OpenPictureDialog1 -> InitialDir;

20.

Краткое руководство по работе с классом
TCanvas для начинающих - C++ Builder
English     Русский Правила