Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3-6-9-12....doc
Скачиваний:
1
Добавлен:
04.08.2019
Размер:
102.91 Кб
Скачать

33 Билет

Класс TCanvas

Этот класс — сердцевина графической подсистемы Delphi. Он объединяет в себе и "холст" (контекст конкретного устройства GDI), и "рабочие инструменты" (перо, кисть, шрифт), и даже "подмастерьев" (набор функций по рисованию типовых геометрических фигур). Будем называть его канвой.

Канва не является компонентом, но она присутствует в качестве свойства во многих других компонентах, которые должны уметь нарисовать себя и отобразить какую-либо информацию.

procedure Arc (XI, Yl, Х2, Y2, ХЗ, Y3, Х4, Y4:Integer) ; - Метод рисует сегмент эллипса. Эллипс определяется описывающим прямоугольником (X1.Y1)— (Х2, Y2); его размеры должны лежать в диапазоне от 2 до 32 767 точек. Начальная точка сегмента лежит на пересечении эллипса и луча, проведенного из его центра через точку (ХЗ, Y3). Конечная точка сегмента лежит на пересечении эллипса и луча, проведенного из его центра через точку (Х4, Y4). Сегмент рисуется против часовой стрелки

procedure Chord (XI, Yl, X2, Y2, X3, Y3, X4, Y4: Integer) ; - Рисует хорду и заливает отсекаемую ею часть эллипса. Эллипс, начальная и конечная точки определяются, как в методе Arc

procedure Ellipse (XI, Yl, X2, Y2 : Integer); - Рисует и закрашивает эллипс, вписанный в прямоугольник (Х1, Y1) - (Х2, Y2)

procedure BrushCopy (const Dest: TRect; Bitmap: TBitmap; const Source: TRect; Color: TColor) ; - Производит специальное копирование. Прямоугольник Source из битовой карты Bitmap копируется в прямоугольник Dest на канве; при этом цвет Color заменяется на цвет текущей кисти (Brush. Color).

С помощью этого метода можно нарисовать "прозрачную" картинку. Для этого нужно выбрать соответствующий фону цвет кисти и затем заменить на него фоновый или наиболее часто встречающийся цвет битовой карты (см. Bitmap. TransparentColor)

procedure FloodFill (X, Y: Integer; Color: TColor; FillStyle: Tf illStyle) ; TFillStyle = (fsSurface, fsBorder); - Производит заливку области текущей кистью. Процесс начинается с точки (X, Y). Если режим FillStyle равен fsSurface, то он продолжается до тех пор, пока есть соседние точки с цветом Color. В режиме fsBorder закрашивание, наоборот, прекращается при выходе на границу с цветом Color

procedure Rectangle (XI, Yl, X2, Y2: Integer); - Рисует прямоугольник с верхним левым углом в (Х1, Y1) и нижним правым в (Х2, Y2)

procedure TextRect (Rect : TRect; X, Y: Integer; const Text: string); - Производит вывод текста с отсечением. Как и в TextOut, строка Text выводится с позиции (X, Y); при этом часть текста, лежащая вне пределов прямоугольника Rect, отсекается и не будет видна

property ClipRect: TRect; - Определяет область отсечения канвы. То, что при рисовании попадает за пределы этого прямоугольника, не будет изображено. Свойство доступно только для чтения — его значение переустанавливается системой в контексте устройства, с которым связана канва

property Per.Pos : TPoint; - Содержит текущую позицию пера канвы (изменяется посредством метода MoveTo)

36 Билет

SetWindowPos(fmAlarmForm.Handle, hwnd_TopMost, 300, 300, 250, 70, swp_noActvate)

Первым параметром обращения к функции является дескриптор окна, которое должно стать “поплавком”. Напомню, что дескриптор формы содержится в ее свойстве Handle, поэтому для формы fmAlarmForm параметр вызова имеет вид fmAlarmForm. Handle. вторым параметром определяется расположение окна относительно других окон в так называемом Z-порядке их расположения. Константа nwnd_TopMost указывает, что окно должно стать самым верхним и впредь до его закрытия не может перекрываться другими (обычными) окнами. Четыре следующие параметра определяют координаты левого верхнего угла окна, его ширину и высоту. Все параметры указываются в пикселях, координаты угла задаются относительно, левого верхнего угла экрана. Последним указывается один или несколько битовых флагов, уточняющих поведение окна. В нашем примере использован флаг swp_noActvate, означающий, что окно не получает фокуса ввода в момент своего появления на экране. Поясню, что на практике я часто использую окна-поплавки, чтобы сообщить пользователю, например, о необходимости обновить набор данных, которые он видит в настоящий момент, так как эти данные были изменены другими пользователями клиент-серверной БД. Такое окно не должно отнимать активность (фокус ввода) у окна, с которым работает пользователь. Иными словами, если пользователь закроет такое окно, оно не появится в результате вызова функции setwindowpos - его предварительно нужно сделать видимым методом show. Поскольку окно-поплавок может вызываться в разных местах программы, удобно поместить вызов функции setwindowspos в его обработчик события onActivate. Однако если вы попытаетесь создать такой обработчик для окна со стилем FormStyle=fsStayonTop, то компилятор выдаст сообщение об ошибке и поместит заготовку метода в тексте модуля после ограничителя “.”. В этом случае определяйте окно со стилем fsNormal.

Функция IsIconic

Описание:

function IsIconic(Wnd: HWnd): Bool;

Опpеделяет, является ли окно пиктогpаммой (минимизиpованным).

Паpаметpы:

Wnd: Идентификатоp окна.

Возвpащаемое значение:

Не нуль, если минимизиpовано; 0 - если нет.

функция находится в файле user32.dll

Функция OpenIcon

Описание:

function OpenIcon(Wnd: HWnd): Bool;

Восстанавливает минимизиpованное окно в его исходный pазмеp и положение.

Паpаметpы:

Wnd: Идентификатоp окна.

Возвpащаемое значение:

Не нуль в случае успешного завеpшения; 0 - в пpотивном случае.