(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Построение графиков

Источник: welikeit

Что делать, если ваше приложение должно строить графики? Можно все сделать самостоятельно, а можно воспользоваться готовыми решениями (сторонними компонентами). Сегодня поговорим о компоненте gl.ocx, который является частью пакета MathCad. Этот компонент обладает большим количеством настроек: освещение, туман, внешний вид, перспектива и т.д., и способен украсить любую вашу программу.

Если MathCad у вас установлен, запускаем Delphi, заходим в Component -> Import ActiveX Control и выбираем Mathsoft 3-D Plot module (Version x.x), где x.x - версия компонента (у меня 8.6). Если MathCad′а у вас нет, то скачиваем этот компонент из интернета. В этом случае вам еще понадобятся библиотеки EfiUtils.dll, UIUtil.dll, VSFC90.dll. Переписываем эти файлы в отдельный каталог, заходим в Component -> Import ActiveX Control и нажимаем кнопку "Add...". Находим gl.ocx и нажимаем "Install...". Компонент установится на вкладку ActiveX, и будет называться OpenGL.

TOpenGL способен отображать 2D и 3D графики, а в качестве данных должен передаваться одномерный или двухмерный массив типа OleVariant соответственно. Начнем с простого и нарисуем синусоиду.

procedure TForm1.Button1Click(Sender: TObject);
const
Start = -pi;
Finish = pi;
Step = 50;
var
Diagram: OleVariant;
i: integer;
begin
Diagram := VarArrayCreate( [0,Step], varDouble );
for i := 0 to Step do
Diagram := sin( ( Finish - Start ) / Step * i );
OpenGL1.RemoveSurfaces;
OpenGL1.AddSurface( Diagram );
end;

Для TOpenGL, заполненный массив представляет собой поверхность, которую нужно нарисовать, причем одновременно может быть отображено несколько таких поверхностей. Просто создаем несколько массивов OleVariant, заполняем их, и добавляем к списку поверхностей, которые должны быть построены, используя функцию AddSurface. RemoveSurfaces полностью отчищает этот список.

Теперь посмотрим, как строится 3D график, на примере функции Cos(Sqrt(X*X+Y*Y)).

procedure TForm1.FormCreate(Sender: TObject);
var
Diagram: OleVariant;
i, j: integer;
k: integer;
begin
k := 36;
Diagram := VarArrayCreate( [0,k,0,k], varDouble );
for i := 0 to k do
for j := 0 to k do
Diagram[i,j] := Cos( Sqrt( ( i-k/2 ) * ( i-k/2 ) + ( j-k/2 ) * ( j-k/2 ) ) );
OpenGL1.RemoveSurfaces;
OpenGL1.AddSurface( Diagram );
end;

Теперь поговорим о распространении приложений, использующих этот компонент. Не факт, что у пользователя, установившего вашу программу, установлен MathCad. Следовательно, вместе с приложением придется распространять следующие файлы: gl.ocx, EfiUtils.dll, UIUtil.dll, VSFC90.dll. Помимо этого следует помнить, что gl.ocx необходимо зарегистрировать в системе.

Если вы будете распространять свое приложение в архиве, вам самим придется позаботиться о регистрации компонента. Для этого в системе имеется штатная утилита regsvr32. Регистрация выполняется следующим образом: "regsvr32 c:путь к файлуgl.ocx". Обратное действие выполняется так: "regsvr32 /u c:путь к файлуgl.ocx". Разумеется, путь к файлу должен быть реальный.

Если вы будете распространять свое приложение в виде инсталляционного пакета, то заботу о регистрации компонента можно возложить на него. Например, если вы делаете инсталлятор в CreateInstall, то на вкладке "Мастер" выберите "Регистрировать", и добавьте gl.ocx к списку файлов, которые нужно зарегистрировать. А для Inno Setup это может выглядеть примерно так:

[Setup]
AppName=MathSoft 3-D plot module
AppVerName=MathSoft 3-D plot module 8.0
AppCopyright=MathSoft, Inc
DefaultDirName={sys}

[Files]
Source: "C:distrActiveXUiUtil.dll"; DestDir: "{sys}"
Source: "C:distrActiveXEfiUtils.dll"; DestDir: "{sys}"
Source: "C:distrActiveXVSFC90.dll"; DestDir: "{sys}"
Source: "C:distrActiveXgl.ocx"; DestDir: "{sys}"; Flags: regserver

На сегодня это все. Удачи в программировании.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 27.12.2006 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Quest Software. SQL Navigator Professional Edition
ABBYY Lingvo x6 Английская Профессиональная версия
EMS SQL Management Studio for InterBase/Firebird (Business) + 1 Year Maintenance
SAP Crystal Reports 2008 INTL WIN NUL License
ABBYY Lingvo x6 Многоязычная Профессиональная версия, электронный ключ
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Мир OLAP и Business Intelligence: новости, статьи, обзоры
Новые программы для Windows
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100