Класс
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;
|