|
Класс TGraphic
Канва, перо, кисть и шрифт нужны, чтобы
нарисовать свою картинку. Чтобы загрузить готовую, необходимы
объекты, "понимающие" графические форматы
Windows.
Абстрактный класс TGraphic
является родительским для трех видов изображений, общепринятых
в графике Windows — значка (компонент Ticon),
метафайла (компонент TMetafile)
И растровой картинки (компонент TBitmap).
Четвертым потомком TGraphic является
TuPEGimage — сжатая растровая
картинка в формате JPEG.
Работая над приложением в Delphi, вы
никогда не будете создавать объекты класса TGraphic,
но переменной этого типа вы можете присваивать указатель
на любой из перечисленных классов-потомков.
Метод:
procedure Assign(Source:
TPersistenti;
переопределяет одноименный метод предка,
допуская полиморфное присваивание графических объектов.
Загрузку и выгрузку графики в поток
осуществляют методы:
procedure LoadFromStream(Stream:
TStream);
procedure SaveToStream(Stream:
TStream);
а загрузку и выгрузку в файл — методы:
procedure LoadFromFile(const
Filename: string); procedure SaveToFile(const Filename:
string);
Эти методы создают соответствующий
файловый поток и затем вызывают методы
LoadFromStream/SaveToStream.
Два метода осуществляют взаимодействие
с буфером обмена Windows:
procedure LoadFromClipboardFormat(AFormat:
Word; AData: THandle;
APalette: HPALETTE);
procedure SaveToClipboardFormat(var
AFormat: Word; var AData: THandle;
var APalette: HPALETTE);
Здесь AFormat
— используемый графический формат; AData
и APalette — данные и палитра
(если она требуется). Потомок должен иметь свой формат
представления в буфере обмена и уметь обрабатывать данные,
представленные в нем.
Загрузка больших графических файлов
может продолжаться очень долго. Чтобы скрасить пользователю
ожидание, программист может обработать событие OnProgress!
type
TProgressStage =
(psStarting, psRunning, psEnding);
TProgressEvent =
procedure (Sender: TObject; Stage: TProgressStage;
PercentDone: Byte;
RedrawNow: Boolean; const
R: TRect; const Msg:
string) of object; property OnProgress: TProgressEvent;
Оно вызывается графическими объектами
во время длительных операций. Параметр
stage означает стадию процесса (начало/протекание/завершение),
a PercentDone — процент сделанной
работы. Сразу оговоримся, что не все из тех объектов,
которые будут нами описаны, вызывают обработчик события
OnProgress.
Свойство:
property Empty: Boolean;
устанавливается в значение True,
если графический объект пуст (в него не загружены данные).
Высота и ширина графического объекта
задаются свойствами:
property Height:
Integer; property Width: Integer;
Для каждого дочернего типа эти параметры
вычисляются своим способом. Наконец, свойство:
property Modified:
Boolean;
показывает, модифицировался ли данный
графический объект. Это свойство устанавливается в значение
True внутри обработчика события
OnChange.
Многие графические объекты при отрисовке
должны быть прозрачными. Одни из них прозрачны всегда
(значок, метафайл), другие — в зависимости от значения
свойства
property Transparent:
Boolean;
|