M Y D E L P H I 7 . R U Самоучитель программирования  
 
  • Главная
  •  

     

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