рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Класс TGraphic

Класс TGraphic - раздел Компьютеры, Лекция № 31 Класс Tgraphic ...

Лекция № 31

Класс TGraphic

TGraphic = class(TPersistent)

Этот абстрактный класс является родительским для трех видов изображений, общепринятых в графике Windows — значка (класс TIcon), метафайла (класс TMetafile) и растровой картинки (класс TBitmap).

Метод procedure Assign(Source: TPersistent) - переопределяет одноименный метод предка, позволяя полиморфное присваивание графических объектов (см. ниже).

Загрузку и выгрузку графики в поток осуществляют методы:

procedure LoadFromStream(Stream: TStream);

procedure SaveToStream(Stream: TStream);

а загрузку и выгрузку в файл:

procedure LoadFromFile(const Filename: string) ;

procedure SaveToFile(const Filename: string);

Эти методы создают соответствующий файловый поток и затем вызывают методы LoadFromStream/SaveToStream.

Два метода осуществляют взаимодействие с буфером обмена:

procedure LoadFromClipboardFormat(AFomat: Word; AData: THandle;APalette: HPALETTE);

procedure SaveToCiipboardPormat(var AFormat: Word; var AData:

THandle; var APalette: HPALETTE);

Здесь AFormat — используемый графический формат; AData и APalette _ данные и палитра (если она требуется). Потомок должен иметь свой формат и уметь обрабатывать данные, представленные в нем.

Свойство

Empty: Boolean; устанавливается в True, если графический объект пуст (в него не загружались данные).

Высота и ширина графического объекта: свойства Height: Integer; Width: Integer;

Для каждого дочернего типа значения этих свойств вычисляются своим способом. Наконец, свойство Modified: Boolean; показывает, модифицировался ли данный графический объект. Это свойство устанавливается в True внутри обработчика события OnChange.

 

Программное построение изображений

MoveTo(XH, YH) - установка невидимого курсора в начало линии; LineTo(XK, YK) - проведение линии до точки XK,YK. Обращение к этим методам осуществляется по общим правилам - с помощью составного имени, например, если имя объекта…

Компонент PaintBox (класс TPaintBox)

На странице System есть компонент TPaintBox, который можно использовать для построения приложений типа графического редактора или, например, в качестве места построения графиков. Компонент TPaintBox является самой простой надстройкой над холстом. Можно даже рассматривать его как холст, снабженный атрибутами компонента. Он представлен свойством Canvas: TCanvas;

помимо холста, компонент имеет свой цвет (фона)- свойство Color: Tcolor,и шрифт - свойство Font: TFont;

Координаты указателя мыши, передаваемые в обработчики соответствующих событий (OnMouseMove и др.), являются относительными, т.е. это смещение мыши относительно левого верхнего угла объекта TPaintBox, а не относительно левого верхнего угла формы.

Пример1

. Как осуществить доступ к отдельной точке на изображении (на холсте).

procedure TForm1.Button1Click(Sender: TObject);

var

i, j : Longint;

begin

Button1.Enabled:=False;

with Canvas do

for i:=1 to Width do begin

Application.ProcessMessages;

for j:=1 to Height do

Pixels[i,j]:=i*j;

end;

Button1.Enabled:=True;

end;

Пример использования методов, выводящих изображение - DrawиStretchDraw:

Прорисовка изображений происходит в обработчике события OnPaint для формы:

procedure TForm1.FormPaint(Sender: TObject);

begin

with Canvas do begin

Draw(0,0, Image1.Picture.BitMap);

StretchDraw(Rect(250,0,350,50),Image1.Picture.BitMap)

end;

end;

 

Класс TPicture

TPicture – это полнофункциональный класс, который инкапсулирует в себе все необходимое для работы с графическими изображениями (значком, растром, метафайлом). Его свойство Graphic может содержать объект любого из этих типов, то есть это свойство обеспечивает доступ к графическим объектам указанных типов. Свойства Htight и Width определяют высоту и ширину изображения в пикселах.

Если в поле Graphic хранился объект одного класса, а затребован другого, то прежний объект уничтожается, а вместо него создается пустой объект нужного класса.

Перечислим остальные методы и свойства:

 

procedure LoadFromFile(const Filename: scring); Анализирует расширение имени файла FileName и, если оно известно (зарегистрировано), то создается объект нужного класса и вызывается его метод LoadFromFile. В противном случае возникает исключительная ситуация EInvalidGraphic. Стандартными расширениями являются .ICO, .WMF и .BMP.

 

procedure SaveToFile(const Filename: string); Сохраняет графику в файле Filename.

 

procedure LoadFromClipboardFormat(var AFormat: Word; var AData: THandle; var APalette: HPALETTE) ;

Ищет в буфере обмена (clipboard) зарегестрированный формат Aformat и если формат найден, загружает из буфера изображение Adata и его палитру Apalette.

. Стандартно зарегистрированных форматов два: битовое изображение и метафайл.

 

procedure SaveToClipboardFormat(var AFormat: Word; var AData: THandle; var APalette: HPALETTE; Сохраняет графическое изображение Adata и его цветовую палитру APalette в буфере обмена в формате AFormat.

 

procedure Assign(Source: TPersistent) ;

Связывает собственный графический объект Graphic с объектом Source. Присваиваемый объект может быть класса как TPicture, так и TGraphic или любого его потомка. Кроме того, параметр Source может быть равен nil — в этом случае поле Graphic очищается с удалением прежнего объекта.

 

Все три разновидности графических объектов имеют свои системы кэширования. Это означает, что на один реально существующий в системе (и занимающий долю ресурсов!) дескриптор могут одновременно ссылаться несколько объектов. Реализуется такое связывание через метод Assign. Выражение Iconi.Assign(Icon2); означает, что два этих объекта разделяют теперь один значок.

Более простым является кэширование для TIcon и TMetafile, которые умеют только отображать себя и не предназначены для редактирования (создатели Delphi считают, что дескриптор графического объекта дается программисту не для того, чтобы ковыряться в нем на уровне двоичных кодов). Гораздо сложнее устроен механизм кэширования для TBitmap, который имеет свою канву для рисования.

Внутреннее представление информации в графических объектах двоякое — она может храниться как поток типа TMemoryStream (в него загружается содержимое соответствующего файла), либо как область памяти с дескриптором (структура которой зависит от типа графического объекта) и одновременно в двух этих видах, содержимое которых автоматически синхронизируется. Поэтому загрузка изображения потребует вдвое большего объема памяти — особенно это актуально для больших картинок.

Кого-то может удивить отсутствие объявленных методов рисования вроде Draw у TIcon, TMetafile и TBitmap. Такие методы есть, но они недоступны. Все рисование должно осуществляться через вызовы методов Draw и StretchDraw холста, содержащго графику, ибо холст несет тот контекст, в котором должна осуществляться операция. Рассмотрим предопределенные графические классы.

 

Класс TMetafile

TMetafile = class(TGraphic)

Инкапсулирует свойства стандартного метафайла Windows. В нем перекрываются методы Assign, LoadFromStream, SaveToStream, LoadFromClipboardFormat, SaveToClipboardFormat. В буфер обмена объект помещает свое содержимое в формате CF_METAFILEPICT. Помимо общих, класс имеет свойства:

Handle: типа HMETAFILE; Дескриптор метафайла.

Inch: типа Word; Число точек на дюйм в координатной системе метафайла. Связано с установленным режимом отображения.

 

Класс TIcon

TIcon = class(TGraphic)

Инкапсулирует значок Windows. Не пытайтесь изменить размеры значка — они постоянны (равны GetSystemMetrics(SM_CXICON) и GetSystemMetrics(SM_CYICON)), и при попытке присвоить новые значения возникает исключительная ситуация EInvalidGraphicOperation. Значок нельзя также читать и писать в буфер обмена, так как в Windows нет соответствующего формата. В этом классе перекрываются методы класса TGraphic: Assign, LoadFromStream и SaveToStream. Дополнительно также определены:

свойство Handle: HICON; дскриптор значка.

метод ReleaseHandle: типа HICON; Метод "отдает" дескриптор — возвращает значение дескриптора, обнуляя ссылку на него в объекте.

 

Класс TBitmap

TBitmap = class(TGraphic)

Класс соответствует битовой карте, зависимой от устройства (Device — dependent bitmap, DDB). В нем перекрываются методы Assign, LoadFromClipboardFormat, LoadFromStream, SaveToClipboardFormat, SaveToStream. Объект взаимодействует с буфером обмена в формате CF_BITMAP. Холст битовой карты доступен через свойство Canvas: TCanvas;

Обратите внимание на то, что другие потомки TGraphic холста не имеют. С его помощью можно рисовать на поверхности изображения.

Дескрипторы битовой карты и ее палитры доступны как свойства: Handle: HBITMAP; Palette: HPALETTE;

Два метода: function ReleaseHandle: HBITMAP; и function ReleasePalette: HPALETTE;возвращают дескрипторы битовой карты и палитры и после этого обнуляют соответствующие поля, т. е. как бы "отдают" дескрипторы пользователю.

При любом внешнем обращении к дескриптору битовой карты и любой попытке рисовать на ее холсте, разделение одной картинки несколькими объектами прерывается, и объект получает свою отдельную копию содержимого дескриптора. Для этого есть методы:

procedure Dormant — выгружает изображение в поток и уничтожает дескрипторы битовой карты и палитры,

procedure Freelmage — "освобождает" дескриптор битовой карты для дальнейшего использования и внесения изменений. Это означает, что если на данный дескриптор есть ссылки, то он дублируется; поток очищается.

Битовая карта может быть монохромной и цветной, что определено свойством:

property Monochrome: Boolean - Значение True соответствует монохромной битовой карте. При его изменении происходит преобразование содержимого к требуемому виду.

"Фоновый" цвет битовой карты определяется свойством TransparentColor: TColor;

Это тот цвет, который можно отменить в операции BrushCopy, чтобы она выглядела прозрачной. Для монохромной карты этот цвет — белый.

Функции для работы с графикой.

В модуле GRAPHICS сосредоточен целый ряд полезных функций:

function GraphicFilter(GraphicClass: TGraphicClass): string; Эту функцию удобно использовать вместе с диалогами открытия и закрытия файла. Для заданного класса GraphicClass она вернет строку, которую сразу можно присвоить свойству Filter диалога. Например, для TBitmap она вернет строку 'Bitmaps (*.BMP)|*.BMP'.

function GraphicExtension(GraphicClass: TGraphicClass): string; Возвращает строку, содержащую расширение, которое встречается у файлов в формате GraphicClass. Например, GraphicExtension(TIcon) равно строке 'ICO'.

function ColorToRGB(Color: TColor): Longint; Преобразует значение типа TColor в формат RGB.

 

function ColorToIdent(Color: Longint; var Ident: string): Boolean; function IdentToColor(const Ident: string; var Color: Longint):Boolean; Функции взаимного преобразования цвета в строку с его названием (определенным в модуле GRAPHICS). Например, ColorToIdent(clWhite, AString) присвоит AString значение 'clWhite'. В случае неуспеха возвращается False;

function ColorToString(Color: Tcolor): string; function StringToColorfS: string): TColor; Назначение аналогично двум предыдущим функциям. При отсутствии цвета Color в списке предопределенных цветов возвращается строка с его значением в шестнадцатиричном формате. При отсутствии цвета с именем S (в том же списке) делается попытка преобразовать строку в число, в случае неудачи возникает исключительная ситуация.

 

Для преобразования битовой карты из зависимого от устройства формата DDB в независимый (DIB) предназначены две функции:

 

procedure GetDIBSizes(Bitmap: HBITMAP; var InfoHeaderSize: Integer; var ImageSize: Longint); Возвращает размер заголовка изображения и размер самого изображения. Значение InfoHeaderSize равно размеру структуры TBitmapInfoHeader плюс, при необходимости, размеру палитры (каждый элемент которой TRGBQuad занимает 4 байта). В ImageSize возвращается коли­чество байт, которое нужно отвести для получения изображения в формате DIB

 

function GetDIBfBitmap: HBITMAP; Palette: HPALETTE; var Bitmaplnfo; var Bits): Boolean; Преобразует DDB (определенную через Bitmap и Palette) в DIB. Заголовок помещается в Bitmaplnfo, а сами данные — в Bits

 

– Конец работы –

Используемые теги: класс, TGraphic0.05

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Класс TGraphic

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Имеет обширный набор классов. Фрагмент структуры классов Delphi приведен на рис.5.24.1
Классы в Delphi... Delphi имеет обширный набор классов Фрагмент структуры классов Delphi... Предком всех классов Delphi является класс TObject Он обладает самыми общими методами присущими любому объекту...

Тема урока: Информация и её виды. Что изучает информатика? Техника безопасности в компьютерном классе Урок информатики в 10 классе 1 Из материалов сайта
Урок информатики в классе... Из материалов сайта Скородянской средней школы Губкинского района... Цель урока Познакомить учащихся с новым предметом Изучить понятие информации Воспитание умения слушать учителя...

Цветковые растения. Класс двудольные
Цветы собраны в щитковые, кистевые, метельчатые и головчатые соцветия. Встречаются одиночные цветки.Чашелистиков 5, лепестков обычно 5, тычинок от… Листья бывают простые и сложные, располагаются поочередно и имеют прилистники.… Пестик один. Плод - боб. На корнях многих бобовых поселяются клубеньковые бактерии, которые участвуют в минеральном…

Активизация мыслительной деятельности учащихся начальных классов на уроках математики с помощью самостоятельной работы.
Но для того, чтобы обучение математике было успешным, для активизации мыслительной деятельности младших школьников, необходимо включать в уроки… Какую же роль играет самостоятельная работа младших школьников на уроках… Постановка перед учащимися мыслительных задач, цель которых состоит в самостоятельном по¬лучении ответа на…

Шпора по физике 11 класс
Система координат, тело отсчета, с которым она связана, и выбранный способ измерения времени образуют систему отсчета. Рассмотрим два примера. Размеры орбитальной станции, находящейся на орбите… Длина части траектории между начальным и конечным положением точки называют путем L . Единица измерения пути - 1м.…

Класс Птицы (Пернатые)
Птицы обладают очень острым зрением. Ухо состоит из трех отделов: наружного, среднего и внутреннего. Челюсти вытянуты в клюв и одеты роговым… Среди контурных перьев различают рулевые, участвующие в управлении полетом, и… Кости скелета тонкие и прочные. Полости трубчатых костей заполнены воздухом, что облегчает полет птиц. Шейный отдел…

Класс Насекомые
Две пары крыльев насекомых расположены соответственно на средне- и, заднегруди. Число брюшных сегментов варьирует от З до 11. На сеегментах… Кровь (гемолимфа) свободно циркулирует в полости тела, омывая ткани и органы.… Насекомые раздельнополы. Органы размножения самки представлены парными яичниками и тянущимися по бокам яйцеводами,…

Класс Пресмыкающиеся (Рептилии или Гады)
Позади глаз находятся органы слуха, состоящие из внутреннего и среднего уха. Скелет имеет те же отделы, что и у земноводных. Позвоночник включает… У черепах ребра срастаются с панцирем. В плечевом поясе пресмыкающихся… Легкие пресмыкающихся хорошо развиты, они имеют ячеистое строение, увеличивающее площадь газообмена. Дыхание…

Класс Земноводные (Амфибии)
Задние конечности длиннее передних и более развиты, т.к. служат для отталкивания при прыжках и плавании. Между пальцами задних конечностей есть… В среднем ухе расположена одна слуховая косточка, многократно усиливающая… Шейный и крестовый отделы имеют всего по одному позвонку, что позволяет животным немного опускать голову. Пояса…

План-конспект урока-семинара по русскому языку в 11 классе на тему: "Лингвистический анализ текста"
Оборудование: текст романа В.В.Набокова «Приглашение на казнь». Подготовка к занятию. За неделю до проведения семинара учитель знакомит учащихся с… Учащиеся делятся на подгруппы (по 4-5 человек). Каждая подгруппа выбирает для… Для того, чтобы, обсуждение докладов на семинарском занятии сделать более эффективным, необходимо потребовать, чтобы…

0.05
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам