Cегодня мы поговорим
об инкапсуляция графики в компонент.
Инкапсуляция
графики в компонент
Delphi упрощает графику
Windows, инкапсулируя различные графические инструменты в холст. Холст
представляет собой поверхность окна или элемента управления, предназначенную
для рисования, и содержит другие классы, типа пера, кисти и шрифта. Холст
похож на контекст устройства Windows, но при этом он заботится обо всем
вашем "учете".
Если вы когда-либо
писали графические Windows-приложения, то вы знакомы с требованиями, накладываемыми
графическим интерфейсом устройств (Graphics Device Interface - GDI) Windows.
Например, GDI ограничивает количество доступных контекстов устройства и
требует, чтобы вы восстановили первоначальное состояние графического объекта
перед его уничтожением.
С Delphi вам нет необходимости
волноваться об этом. Чтобы рисовать на форме или другом компоненте вы обращаетесь
к свойству Canvas (холст) компонента. Если вы хотите настроить перо
или кисть, вы устанавливаете ее цвет или стиль. Когда вы закончите, Delphi
сама распорядится ресурсами. Delphi кэширует ресурсы, во избежания их повторного
создания, если ваше приложение часто использует одни и те же ресуры.
При всем этом, вы все
еще имеете полный доступ к GDI Windows, но вы часто будете обнаруживать,
что ваш код становиться более простым и выполняется быстрее, если вы используете
холст, встроенный в компоненты Delphi. Особенности графики детализированы
в разделе Использование графики в компонентах.
Инкапсуляция графики
CLX работает по-другому. Здесь холст - это художник. Чтобы рисовать на форме
или другом компоненте, вы обращаетесь к свойству Canvas (холст) компонента.
Canvas - это свойство, а также объект по имени TCanvas. TCanvas
- это оболочка вокруг Qt, который доступен через свойство Handle.
Вы можете использовать дескриптор, чтобы получить доступ к функциям низкого
уровня графической библиотеки Qt.
Если вы хотите настроить
перо или кисть, то вы устанавливаете ее цвет и стиль. Когда вы закончите
Kylix распорядится ресурсами. CLX также кэширует ресурсы.
Вы можете использовать
холст, встроенный в CLX компоненты, создавая потомков от них. То, как графические
изображения работают в компоненте, зависит от холста компонента, от которого
ваш компонент произошел. Смотрите раздел Использование
графики в компонентах.
В следующий
раз мы поговорим о создании нового компонента.