Взаимодействие классов TCanvas и TGraphic
В наборе методов холста предусмотрен метод для вывода графических изображений:
procedureDraw(X, Y: Integer; Graphic: TGraphic);
Процедура Draw() вызывает метод прорисовки графического объекта. Левый верхний угол объекта выводится в точке (X,Y).
Масштабирование объекта класса TGraphic обеспечивает процедура:
procedureStretchDraw(constRect: TRect; Graphic: TGraphic );
Метод StretchDraw() рисует объект TGraphic в границах прямоугольной области Rect. Если размер исходного графического объекта не совпадает с размерами прямоугольника, Graphic масштабируется – вписывается в прямо-
угольную область.
Пиктограмма – класс TIcon
Класс TIcon инкапсулирует пиктограмму Windows. Объект-пиктограмма загружается из файла .ICO. Набор свойств и методов класса невелик. Геометрические размеры пиктограммы жестко заданы глобальными переменными Windows, поэтому свойства Height и Width используйте в режиме только для чтения:
propertyHeight: Integer;
propertyWidth: Integer;
Пиктограмма всегда прозрачна, т. е. свойство Transparent всегда равно true.
propertyTransparent: Boolean;
Доступ к объекту TIcon осуществляется через дескриптор:
propertyHandle: HIcon;
Метод ReleaseHandle передает дескриптор пиктограммы другому объекту, обнуляя ссылку на него:
functionReleaseHandle: HIcon;
Класс TIcon как наследник TGraphic поддерживает операции по работе с потоком и файлом, но не воспринимает буфер обмена Windows.
В Windows API предложены функции, позволяющие извлекать пиктограммы, ассоциированные с приложением. Одна из наиболее распространенных
функций:
functionExtractAssociatedIcon(HINSTANCE:hInst; Path : PChar; lpiIcon :
word):HIcon;
ищет пиктограмму в файле, указанном в параметре Path. Если в теле файла пиктограмма не обнаружена, поиск продолжается в приложении, связанном с данным типом файла. В случае успеха функция возвращает дескриптор пиктограммы. Ниже приведен листинг с примером использования функции ExtractAssociatedIcon(). При желании применить пример на практике не забудьте подключить к вашему проекту модуль ShellAPI.
Implementation
usesShellAPI;
{$R *.DFM}
procedureTForm1.Button1Click(Sender: TObject);
varIcn : TIcon; i : word; fName : string;
Begin
Try
Icn:=TIcon.create;
fName:=Edit1.text; // полное имя файла
Icn.Handle:=ExtractAssociatedIcon(application.handle, PChar(fName), i);
Form1.canvas.draw(10,10,Icn);
Finally
Icn.free;
end;
end;
Дата добавления: 2016-03-15; просмотров: 659;