Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
loou
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 29
#1

Простой класс для построения графиков функции WinAPI - C++

20.12.2013, 09:54. Просмотров 514. Ответов 0
Метки нет (Все метки)

Выкладываю свой простенький класс для построения графика в окне.
Может кому полезен будет. Он конечно кривоват и функционала мало.
Зато предельно прост.

Ну и критика приветствуется

Использование класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 cPlot Plot; // объявление
 
//.....................
// Там где окно уже создано
double Pos[]={0.0, 0.0, 0.5, 0.5}, // позиция графика в окне в относительных единицах {x1,y1,x2,y2}
       Scale[]={0.0, 0.0, 10.0, 2.0}; // Шкала по X и Y в формате {x1,y1,x2,y2}
 
Plot.Set(hWnd, Pos, Scale); // Можно Pos и Scale опустить, будут использованы значения по умолчанию
 
//.....................
// Гденибудь где нужно задать или изменить данные которые выводяться на график
double X[]={ 0,  1,   2,  3,  4,  5,  6,  7,  8},
       Y[]={ 1,  0, -1,  0,  1,  0, -1,  0,  1};
 
Plot.SetData(X,9,Y,9); // 9 длина массивов, NX=NY, но NX или NY может быть равна 2 тогда X или Y считается линейной
 
// То же самое, что выше но требует меньше памяти и работает быстрее
double X1[]={ 0,  1},
       Y1[]={ 1,  0, -1,  0,  1,  0, -1,  0,  1};
 
Plot.SetData(X,2,Y,9); // X линейная X0=X[0], Xn=X[0]+(X[1]-X[0])*n, !!! при X[1]-X[0] < 0 не работает !!! просто не реализованно 
// или можно вот так
Plot.SetData(Y,9,X,2); 
 
// Отрисовка графика в оконной функции
   case WM_PAINT: {
      hdc = BeginPaint(hWnd, &ps);
      // TODO: Add any drawing code here...
      Plot.Draw(); // Отрисовка графика; 
      EndPaint(hWnd, &ps);
      } break;
 
// Изменение шкалы, например по колесику мыши
   case WM_MOUSEWHEEL: {
      int N; double dX, Scale[4];
      Plot.GetScale(Scale);
      
      wheelDelta += GET_WHEEL_DELTA_WPARAM(wParam);
      N=wheelDelta/WHEEL_DELTA; wheelDelta-=N*WHEEL_DELTA; 
 
      dX=0.1*(Scale[2]-Scale[0])*N;
      Scale[0]-=dX; Scale[2]-=dX;
 
      Plot.SetScaleX(Scale); // или SetScaleY
      } break;
 
// Сохранение относительных размеров графика при изменении размера окна
   case WM_SIZE: {
      Plot.SetPosX(); // Устанавливает положение по горизонтали в окне по текущему Pos в относительных единицах
      Plot.SetPosY(); // то-же по вертикали, Если нужно изменить положение Plot.SetPosX(Pos),
      } break;           // если нужно установить в пикселях Plot.SetPPosX(PPos)
 
// Подписи к осям по умолчанию X и Y
SetXLabel(_T("X Scale")); // void SetXLabel(TCHAR *tcLabel) и так же для Y
1
Вложения
Тип файла: rar cPlot.rar (5.8 Кб, 23 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2013, 09:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Простой класс для построения графиков функции WinAPI (C++):

Поиск простой библиотека для построения простых 2D графиков - C++
Нужна очень простая библиотека для построения графиков на C/C++. Нужный функционал: умение рисовать графики по точками или просто...

Библиотека или класс для построения иерархии каталога жесткого диска - C++
Привет всем. Ищу библиотеку, с помощью которой я смогу реализовать выбор для открытия какого-либо файла на компе в моем приложении. Нужна...

Создать класс для представления простой дроби - C++
Создать класс для представления простой дроби. Реализовать конструкторы, функцию сокращения дроби, а также перегрузить операции +, -, *, /,...

Библиотеки для построения графика функции - C++
Здравствуйте, уважаемые форумчане) Подскажите, пожалуйста, аналог для построение графиков в matlab. Существует ли такая библиотека?

Создать шаблон функции для построения очереди - C++
Помогите, пожалуйста, сделать задачу: Реализовать шаблон функции для построения очереди и работы с ней(добавление, изменение,...

Программа для построения таблицы истинности булевой функции - C++
Нужно написать программу на C++ для построения таблицы истинности по введённой функции, минимум 4 переменные. Для четырех логических...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2013, 09:54
Привет! Вот еще темы с ответами:

Составить программу для построения графика функции Эйлера - C++
Вот код для вычисления ф-ции эйлера #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() { ...

Создание WinApi функции для нахождения максимального элемента массива в нескольких потоках - C++
Задача состоит в следующем: ножно написать программу, которая будет находить максимальное значение массива в нескольких потоках. Я написал...

Используя производные классы, определить класс параметризованного списка одного из следующих типов. Применить его для построения списка объектов указа - C++
Используя производные классы, определить класс параметризованного упорядоченного списка. Применить его для построения упорядоченного...

простой класс - C++
покажите пожалуйста самую простою классу, корорый показывает &quot;Hello World&quot;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru