Так теперь выглядит главная форма примера GraphEx
Рисунок 10.1. Так теперь выглядит главная форма примера GraphEx
Где же найти ту канву, на которой предстоит рисовать? Во-первых, ею снабжены все потомки классов TGraphicControl и TCustomControl, т. е. почти все визуальные компоненты из Палитры компонентов; в том числе и форма. Во-вторых, канву имеет растровая картинка (класс TBitmap); вы можете писать и рисовать не на пустом месте, а на готовом изображении (об этом см. ниже в разд. "Класс TBitmap" данной главы). Но иногда нужно рисовать и прямо на экране. В этом случае придется прибегнуть к использованию функций API. Функция Getoc возвращает контекст устройства заданного окна, если ей передается параметр 0 — то всего экрана:
ScreenCanvas := TCanvas.Create;
ScreenCanvas.Handle :=GetDC{0);
// Рисование на ScreenCanvas
ReleaseDC(0, ScreenCanvas.Handle);
ScreenCanvas.Free;
Пример необходимости рисования на экране — программы сохранения экрана (Screen savers).
Когда и где следует рисовать? Этот вопрос далеко не риторический, как может показаться с первого взгляда.
Помимо графических примитивов, таких как линии и фигуры, на канве можно разместить готовые изображения. Для их описания создан класс TGraphic.