Компоненты ActiveX

Создание компонент ActiveX такими инструментальными средствами разработки программ как С++ или Visual Basic. Основы графического интерфейса Windows. Обзор графических компонент C++Builder. Компонент TCanvas. Компоненты для работы с изображениями.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 29.07.2012
Размер файла 203,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Компоненты ActiveX

1. Компоненты ActiveX

Палитра компонентов

Страница ActiveX.

Компоненты ActiveX создаются такими инструментальными средствами разработки программ как, например, С ++ или Visual Basic. На странице ActiveX представлены лишь пять компонентов из большого количества, разрабатываемых повсюду в мире производителями программных средств и отдельными программистами.

Компонент Chartfx (интерактивный график) дает программистам удобное средство включения в программу интерактивных (диалоговых) диаграмм и графиков.

Компонент VSSpell (спеллер) осуществляет орфографическую проверку правильности написания английских слов.

Компонент FlBook (электронная таблица) позволяет создавать и использовать рабочие книги электронных таблиц, подобно тому, как это делает MS Excel.

Компонент VtChart (мастер диаграмм) обеспечивает средства построения двумерных и трехмерных диаграмм по результатам табличных вычислений.

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

2. Основы графического интерфейса Windows

В операционной системе Windows за графический интерфейс отвечает группа специализированных функций API, имеющая общее название GDI (Graphic Device Interface) [6]. Эти функции отвечают за отображение графических примитивов на устройстве отображения (окружности, линии, прямоугольники и т.п.), настройку основных инструментов отображения (цвет, тип линий, шрифт), получение информации об устройстве отображения. Располагаются функции GDI в файлах gdi.dll и gdi32.dll. Основным достоинством GDI является то, что посредством него унифицируется работа с различными устройствами отображения. Это означает, что вывод графической информации на экран монитора, принтер или плоттер выполняется в приложении Windows совершенно единообразно, а особенности того или иного устройства отображения учитываются уже самим модулем GDI в диалоге с драйвером устройства. Подобная универсальность достигается за счет использования контекста отображения для устройства. Контекст отображения представляет собой структуру данных, описывающую основные характеристики устройства, с которым он связан (размер, тип, разрешение, используемая система координат и др.). Таким образом, для вывода информации на то или иное устройство отображения (в том числе - в окно приложения), программист должен получить его контекст отображения и уже на него осуществлять вывод. Взаимодействие прикладной программы и устройства отображения в Windows показано на рис. 1.

Еще одна важная функция GDI - работа с инструментами рисования. Для отображения графической информации в Windows используется большое количество инструментов - кисти, перья, шрифты, битовые изображения, регионы. Для того, чтобы использовать при выводе, например, шрифт, отличный от стандартного, программист должен создать этот шрифт специальной GDI-функцией и выбрать этот шрифт в контекст отображения. После этого функции вывода текста будут использовать именно этот шрифт для формирования изображения. В листинге 7.1 приведен пример вывода информации в окно Windows с использованием функций GDI.

Листинг 1. Пример работы с функциями GDI

HDC hdc; HPEN hPen; HFONT hFont;

hdc=GetDC(hWnd); // Получить контекст окна с дескриптором hWnd

hPen=CreatePen (PS_SOLID, 4, RGB (255,0,0)); // создать перо

SelectObject (hdc, hPen); // выбрать перо в контекст отображения

Ellipse (hdc, 100,100,200,200); // нарисовать эллипс

hFont=CreateFont (20,10,0,0, FW_THIN, TRUE, TRUE, FALSE, ANSI_CHARSET,

OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, NULL); // создать шрифт

SelectObject (hdc, hFont); // выбрать шрифт в контекст отображения

TextOut (hdc, 150,150, «HELLO», 5); // отобразить текст

ReleaseDC (hWnd, hdc); // освободить контекст отображения

DeleteObject(hPen); DeleteObject(hFont); // уничтожить GDI-объекты

3. Обзор графических компонент C++Builder

Приведенный в листинге 1 фрагмент программы иллюстрирует проблемы программирования с использованием API: громоздкость кода для выполнения даже простых действий, необходимость управления системными ресурсами, высокая требовательность к квалификации программиста. С++Builder предлагает ряд компонент для отображения графической информации. Достоинства этих компонент заключаются в том, что всю низкоуровневую работу вроде получения и освобождения контекстов отображения, создания и удаления тех или иных инструментов рисования они берут на себя, предоставляя программисту возможность сосредоточиться на процессе формирования нужного ему изображения.

Перечень основных графических компонент и их место в общей схеме иерархии классов VCL приведен на рис. 2 (графические компоненты выделены). Графические компоненты С++Builder охватывают различные аспекты работы с графикой. Компонент TCanvas предоставляет пользователю удобный интерфейс для доступа к функциям GDI. Не являясь самостоятельным компонентом, объект типа TCanvas используется как свойство других компонент (например, TForm или TPrinter), заменяя собой контекст отображения. Таким образом, рисуя на канве, программист формирует изображение на том компоненте, которому данная канва принадлежит. Компонент TGraphic и производные от него классы позволяют работать с растровыми изображениями некоторого ресурса (битового изображения, метафайла, файла в формате jpeg). Компонент TPicture представляет собой контейнер для хранения графических изображений, представленных компонентами типа TGraphic. Таким образом, TPicture выступает как объект, в котором могут храниться битовый образ, пиктограмма или метафайл. Сам же объект типа TPicture может быть свойством другого компонента (например, TImage), представляя, таким образом, универсальный способ представления графики для своего владельца.

Размещено на http://www.allbest.ru/

4. Компонент TCanvas

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

Основные свойства и методы компонента TCanvas приведены в таблицах 1 и 2.

Таблица 1. Свойства компонента TCanvas

Свойство

Назначение

Pen

Перо. Предназначено для установки параметров отображения линий (цвет, стиль, толщина). Экземпляр класса TPen

Brush

Кисть. Предназначено для установки параметров заливки объектов (цвет, текстура). Экземпляр класса TBrush

Font

Шрифт. Определяет параметры выводимого текста (цвет, размер, стиль). Экземпляр класса TFont

PenPos

Текущая позиция пера. Используется как опорная точка в некоторых функциях вывода (MoveTo, LineTo)

ClipRect

Определяет прямоугольный регион отсечения при выводе. Отрисовка осуществляется только внутри этого прямоугольника

Pixels

Массив цветов точек канвы. Представляет собой двумерный массив элементов типа TColor, каждый из которых Pixels [x, y] хранит цвет точки с координатами (x, y) холста (канвы)

Handle

Дескриптор контекста отображения устройства вывода, с которым связана канва

CopyMode

Определяет способ наложения рисунков при использовании метод CopyRect

Таблица 2. Методы компонента TCanvas

Методы

Назначение

MoveTo

Изменяет позицию пера

LineTo

Рисует линию от позиции пера к указанной точке

Arc, Ellipse, Rectangle, Pie, Chord

Отображают графические примитивы (дуга, эллипс, прямоугольник, вырезанный эллипс, срезанный эллипс)

Polygon, Polyline

Рисуют ломаные по координатам точек, Polygon замыкает ломаную и закрашивает полученную фигуру, Polyline - нет

TextOut,

TextRect

Выводят текст. TextOut- в указанную точку холста, TextRect- в рамках заданного прямоугольника

TextHeight, TextWidth, TextExtent

Позволяют определить какой размер (высоту, ширину и прямоугольную область соответственно) займет текстовая строка при выводе для текущего шрифта

FloodFill

Закрашивает некоторую область канвы текущей кистью. Область либо ограничена определенным цветом, либо сама имеет заданный цвет

CopyRect

Копирует прямоугольный фрагмент с одной канвы на другую

Draw, StrethDraw

Рисует графический ресурс (битовый образ, пиктограмму, метафайл) на канве. Draw - в реальных размерах, StretchDraw - с масштабированием

После обзора методов и свойств можно переписать листинг 1 средствами C++Builder. Это возможно благодаря тому, что компонент TForm имеет свойство Canvas, представляющее собой объект класса TCanvas. Получившийся код представлен в листинге 2.

Листинг 2. Пример работы с методами и свойствами канвы

Canvas->Pen->Color=RGB (255,0,0);

Canvas->Pen->Width=4;

Canvas->Ellipse (100,100,200,200);

Canvas->Font->Height=20;

Canvas->Font->Name= «Courier»;

Canvas->Font->Style=Canvas->Font->Style<<fsItalic;

Canvas->TextOut (150,150, «Hello»);

Отличия вывода с использованием канвы очевидны - в листинге не создаются объекты GDI, такие как перо, шрифт, не надо получать контекст отображения, все команды направлены только на вывод информации в том виде, как это требуется программисту. Однако наличие в канве свойства Handle позволяет программисту использовать и функции GDI в тех случаях, когда нужный метод в компоненте отсутствует. Так, например, вызов метода канвы TextOut можно заменить вызовом GDI-функции TextOut:

TextOut (Canvas->Handle, 150,150, «Hello», 5);

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

Размещено на http://www.allbest.ru/

Проблему иллюстрирует рис. 3. Если сформировать на форме некоторое изображение, а потом перекрыть часть окна формы другим окном, то при закрытии второго окна Windows определит, что нашей форме нужно восстановить испорченную часть, но по умолчанию эта часть просто закрашивается фоновой кистью, в результате изображение теряет целостность. Исправить ситуацию возможно, создав обработчик события OnPaint для формы. Событие OnPaint возникает всякий раз, когда операционная система решает, что форме необходима перерисовка (изменились размеры окна, часть окна появилась из-под другого и т.п.). Программист должен в обработчике события OnPaint формировать полное изображение на форме в том виде, как он хотел бы его видеть в данный момент. К обработчику события OnPaint можно обратиться и программно. Метод Repaint приводит к незамедлительному вызову обработчика события OnPaint и перерисовке изображения на форме. Частый вызов метода Repaint может существенно замедлить работу приложения. Метод Invalidate объявляет всю клиентскую область формы как требующую перерисовки, что заставить операционную систему сгенерировать сообщение WM_PAINT в тот момент, когда нет других событий для обработки. Сообщение WM_PAINT приведет к появлению события OnPaint.

Канвой обладают не только формы. Свойство Canvas присутствует у таких компонентов, как TPrinter, TBitmap, TImage, TToolbar. Это означает, что графическое изображение, хранящееся в этих компонентах или составляющее их внешний вид, можно изменять, используя описанные в таблицах 1 и 2 свойства и методы.

компонент программа разработка изображение

5. Компоненты для работы с изображениями

Операционная система Windows содержит встроенные средства для поддержки растровых изображений в формате BMP. Другие популярные форматы (JPEG, GIF, PNG) требуют предварительного преобразования в обычный растр перед обработкой или отображением. Это требует детального знания данных форматов и достаточно больших усилий программиста. Однако используя специальные компоненты VCL можно значительно упростить процедуры обработки изображений в различных форматах. Для работы с DDB и DIB-растрами можно использовать компонент TBitmap, с JPEG-форматом - TJPEGImage, с изображениями в формате метафайла - TMetaFile, с GIF-форматом - TGIFImage (не входит в стандартную поставку C++Builder 6.0).

Компонент TBitmap инкапсулирует растровое изображение Windows [4] как в формате DDB (аппаратно-зависимый растр), так и в формате DIB (аппаратно-независимый растр). Благодаря наличию свойства Canvas программист имеет полный доступ к любой точке растра (массив Pixels или свойство ScanLine), а также возможность отображать растр или его фрагмент на другой канве (методы Draw, StretchDraw, CopyRect). Для управления палитрой растра используется свойство Palette. Компонент TBitmap поддерживает также методы загрузки / сохранения растра в стандартном буфере обмена, файле, внешнем потоке, ресурсах приложения. Компонент TBitmap используется в визуальных компонентах С++Builder как свойство Bitmap компонента TPicture. TPicture выступает в этом случае как контейнер, хранящий графику одного из поддерживаемых форматов (bitmap, icon, metafile). Свойство Picture имеют такие компоненты, как TImage, TDBImage, TControlBar. Листинг 3 представляет пример работы со свойствами и методами компонента TBitmap.

Листинг 3. Работа с изображением с помощью TBitmap

Graphics:TBitmap *bm=new Graphics:TBitmap; // Создаем объект TBitmap

if (OpenDialog1->Execute()) // Открываем файл в стандартном диалоге

{bm->LoadFromFile (OpenDialog1->FileName); // загружаем картинку из // файла в Bitmap

bm->Canvas->TextOutA (0, bm->Height-20, «Copy»); // Изменяем растр в // памяти (выводим тект в левом нижнем углу)

Canvas->Draw (20,20, bm); // копируем битовый образ на форму

}

delete bm;

Метод Draw позволяет отобразить некоторую графику (объект класса-потомка TGraphic) на канве. В данном примере содержание растра bm отображается на канве формы в позиции (20,20). Если вызов метода Draw заменить на Canvas->StretchDraw (ClientRect, bm); то содержимое растра будет премасштабировано до размеров указанного в первом параметре прямоугольника (в данном случае - до размеров клиентской области окна).

Используя массив Pixels, можно получить цвет любой точки растра, а также изменить его. Например, первую строку растра можно закрасить белым цветом следующим образом:

for (int i=0; i<bm->Width; i++)

bm->Canvas->Pixels[i] [0]=clWhite;

Для работы с изображениями в формате JPEG предназначен компонент TJPEGImage. Его свойства и методы позволяют загружать и сохранять jpeg-изображения, преобразовывать их в обычный Bitmap, управлять качеством сжатия. Методы Assign и DIBNeeded позволяют преобразовать изображение из JPEG в BMP формат. Для работы с файлами, потоками, буфером обмена используются методы LoadFromFile, LoadFromStream, LoadFromClipboardFormat, SaveToFile, SaveToStream, SaveToClipboardFormat. На качество и производительность данных JPEG влияют свойства: CompresionQuality (степень потери качества при сжатии), Performance (скорость распаковки), Scale (относительный размер изображения при распаковке). В листинге 4 приведен пример работы с JPEG-изображениями в С++Builder.

Листинг 4. Пример работы с изображением в формате JPEG

#include <jpeg.hpp>

if (OpenDialog1->Execute())

{TJPEGImage *ji=new TJPEGImage();

ji->LoadFromFile (OpenDialog1->FileName);

ji->DIBNeeded();

Image1->Height=ji->Height; Image1->Width=ji->Width;

Image1->Picture->Bitmap->Assign(ji);

delete ji;}.

Выводы

Графический интерфейс в ОС Windows реализуется подсистемой GDI, работа с функциями которой требует высокой квалификации программиста. C++Builder предлагает программисту набор графических компонент, которые существенно упрощают графический вывод информации, предоставляя свойства и методы для формирования изображений, а также для работы с графическими файлами различных форматов. При этом графические компоненты C++Builder оставляют возможность работы c API-функциями GDI. Все это обеспечивает эффективность и гибкость работы с устройствами графического вывода информации.

Размещено на Allbest.ru


Подобные документы

  • Вывод графических файлов на компонент Picture. Действия Visual Basic по умолчанию. Создание графического интерфейса пользователя. Циклический показ фотографий. Формирование списка изображений и их циклический вывод на экран с определенным интервалом.

    курсовая работа [3,2 M], добавлен 05.01.2013

  • Элементы ActiveX - результат повторной попытки фирмы Microsoft разработать модель мобильного кода. Создание документов со связыванием и внедрением объектов. Использование сертификатов Authenticode для шифрования и добавления криптографических подписей.

    курсовая работа [97,5 K], добавлен 24.05.2009

  • Особенности интерфейса между разными видами программного обеспечения OLE, разработанного корпорацией Майкрософт. Использование веб-дизайнерами современных элементов управления ActiveX для вставки в страницы мультимедийных данных приложений Windows.

    курсовая работа [3,0 M], добавлен 20.08.2014

  • C++ Builder - SDI-приложение, главное окно которого содержит настраиваемую инструментальную панель и палитру компонентов. Свойства атрибутов компонента, определяющие его внешний вид и поведение. События, методы и VCL компоненты в среде C++ Builder.

    курсовая работа [225,9 K], добавлен 12.02.2009

  • Программирование для Windows. Возможности нового интерфейса. Окна и их управляющие компоненты. DOS и Windows: разные подходы к программированию. Особенности работы с базами данных. Структура программ в CA-Visual Objects. Генерация и обработка событий.

    курсовая работа [1,3 M], добавлен 02.03.2010

  • Визуальные компоненты среды разработки С++ Builder: форма, кнопка, надпись, изображение, многостраничная панель, таблица строк. Интерфейс программы автоматизации расчета численности рабочих. Окно для ввода исходных данных. Руководство пользователя.

    курсовая работа [480,7 K], добавлен 10.02.2012

  • Программный проект Баз данных средствами Visual Basic 6.0. Проектирование структуры таблицы базы данных Visual Basic 6.0. Заполнение созданных таблиц БД исходными данными. Создание пользовательского меню. Вид формы и свойства элементов управления.

    курсовая работа [3,0 M], добавлен 19.06.2010

  • Рабочая среда Visual Basic (VB) и ее основные компоненты. Ввод и вывод данных в VB. Объявление переменных и констант в программе. Создание и работа с процедурами и функциями, их виды. Организация ветвления в VB. Использование циклов в программировании.

    практическая работа [502,5 K], добавлен 26.10.2013

  • Принципы визуального программирования. Создание программы, генерирующей звук через определенные промежутки времени. Visual Basic как средство разработки прототипов программы, для разработки приложений баз данных и компонентного способа создания программ.

    лабораторная работа [1,1 M], добавлен 10.12.2014

  • Среда разработки C++ Builder. Использование видимых и невидимых компонентов. Прототип обработчика событий. Менеджер проектов. Установка опций проекта. Создание приложений в С++ Builder. Создание простейшего приложения. Размещение компонентов на форме.

    курсовая работа [226,9 K], добавлен 24.03.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.