Усі ми знаємо, що в програмі Excel можна побудувати різні типи діаграм. На прикладі гістограми, яка зображена на малюнку:
ми спробуємо зробити програму "Кольорова гістограма":
Перше що ми зробимо це зайдемо на сайт miwzua.com та завантажимо там ось цей архів:
Потім через Solution Explorer заходимо в ProgramDlg.h шукаємо розділ public: та після void rndcolor(); пишемо void diagramm();
Після чого заходимо в ProgramDlg.cpp і в кінці коду шукаємо розділ
void CProgramDlg::OnLButtonDown(UINT nFlags, CPoint point) де виключаємо rndcolor(); і вставляємо diagramm();
Потім вище void CProgramDlg::OnLButtonDown(UINT nFlags, CPoint point) пишемо такий код
Потім у гілці void CProgramDlg::OnPaint() там де else виключаємо zastavka(); та вставляємо
ми спробуємо зробити програму "Кольорова гістограма":
Перше що ми зробимо це зайдемо на сайт miwzua.com та завантажимо там ось цей архів:
Після завантаження відкрийте його та запустіть проект...
Потім через Solution Explorer заходимо в ProgramDlg.h шукаємо розділ public: та після void rndcolor(); пишемо void diagramm();
Після чого заходимо в ProgramDlg.cpp і в кінці коду шукаємо розділ
void CProgramDlg::OnLButtonDown(UINT nFlags, CPoint point) де виключаємо rndcolor(); і вставляємо diagramm();
void CProgramDlg::diagramm()
{
// рисуем на планшете
CClientDC dc(this);
GetClientRect(&rc);
{
// рисуем на планшете
CClientDC dc(this);
GetClientRect(&rc);
// ширина и высота в равных частях
dx = abs(rc.right - rc.left) / 7;
dy = abs(rc.bottom - rc.top) / 7;
dx = abs(rc.right - rc.left) / 7;
dy = abs(rc.bottom - rc.top) / 7;
// формируем разноцветье для прямоугольников
for (k = 0; k < 7; k++)
{
cx = rand() % 255;
cy = rand() % 255;
cz = rand() % 255;
c[k] = RGB(cx, cy, cz);
}
for (k = 0; k < 7; k++)
{
cx = rand() % 255;
cy = rand() % 255;
cz = rand() % 255;
c[k] = RGB(cx, cy, cz);
}
// перекрашиваем область в белое
cf = ck = RGB(255, 255, 255);
dc.Rectangle(&rc);
cf = ck = RGB(255, 255, 255);
dc.Rectangle(&rc);
// прорисовываем прямоугольники разного цвета
for (k = 0; k < 6; k++)
{
// крайние только белого света
if ((k > 0) && (k < 6))
{
cf = ck = c[k];
ck = RGB(255, 255, 255);
}
for (k = 0; k < 6; k++)
{
// крайние только белого света
if ((k > 0) && (k < 6))
{
cf = ck = c[k];
ck = RGB(255, 255, 255);
}
// устанвливаем цвет пера и кисточки
hPenOxy = CreatePen(PS_SOLID, 24, ck);
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
m = CreateSolidBrush(cf);
oldm = (HBRUSH)dc.SelectObject(m);
hPenOxy = CreatePen(PS_SOLID, 24, ck);
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
m = CreateSolidBrush(cf);
oldm = (HBRUSH)dc.SelectObject(m);
// размеры очередного прямоугольника
x1 = rc.left + k*dx;
y1 = rc.top + (rand() % 6 + 1)*dy - rand() % dy;
x2 = rc.left + (k + 1)*dx;
y2 = rc.bottom - dy + 50;
x1 = rc.left + k*dx;
y1 = rc.top + (rand() % 6 + 1)*dy - rand() % dy;
x2 = rc.left + (k + 1)*dx;
y2 = rc.bottom - dy + 50;
// рисуем прямоугольник
if ((k > 0) && (k < 6)) dc.Rectangle(x1, y1, x2, y2);
}
if ((k > 0) && (k < 6)) dc.Rectangle(x1, y1, x2, y2);
}
// восстанавливаем цвета
DeleteObject(m);
SelectObject(dc, oldm);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
DeleteObject(m);
SelectObject(dc, oldm);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
}
Потім у гілці void CProgramDlg::OnPaint() там де else виключаємо zastavka(); та вставляємо
Все готово!!!
Дякую за увагу!!!
Немає коментарів:
Дописати коментар