Программа "Кольрова Кругова Діаграмма"
Для цього ми:
1) Заходимо в
1) Заходимо в
3) Туди записуємо цей розділ:
private:
HPEN hPenOxy, hOldPen;
HFONT hold, hNew, hbk;
HBRUSH m, oldm;
COLORREF cf, ck, c[25];
CPen d, oldd;
CBitmap pic;
CRect rc, w, kw[12];
CString ms, t, z;
int x1, y1, x2, y2;
int Matrix[50][50];
int RH, RW, k, i, j, cx, cy, dx, dy;
bool fg;
4) Теперь заходим в Solution Explorer и там выбираем папочку Source Files, а в ней (название программы)...Dlg.cpp (с таким окончанием)
private:
HPEN hPenOxy, hOldPen;
HFONT hold, hNew, hbk;
HBRUSH m, oldm;
COLORREF cf, ck, c[25];
CPen d, oldd;
CBitmap pic;
CRect rc, w, kw[12];
CString ms, t, z;
int x1, y1, x2, y2;
int Matrix[50][50];
int RH, RW, k, i, j, cx, cy, dx, dy;
bool fg;
public:
void zastavka();
void rndcolor();
void diagramm();
void krdiagramm();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
4) Теперь заходим в Solution Explorer и там выбираем папочку Source Files, а в ней (название программы)...Dlg.cpp (с таким окончанием)
Находим конец и там вставляем все это:
void CProgramDlg::zastavka()
{
CClientDC dc(this);
GetClientRect(&rc);
dx = abs(rc.right - rc.left) / 5;
dy = abs(rc.bottom - rc.top) / 5;
int pp = 0;
for (k = 0; k < 5; k++)
{
for (i = 0; i < 5; i++)
{
if (pp % 2 == 0)
{
cf = 0x0000DDFF;
ck = 0x00C4563D;
}
else
{
ck = 0x0000DDFF;
cf = 0x00C4563D;
}
hPenOxy = CreatePen(PS_SOLID, 6, ck);
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
m = CreateSolidBrush(cf);
oldm = (HBRUSH)dc.SelectObject(m);
x1 = rc.left + k*dx;
y1 = rc.top + i*dy;
x2 = rc.left + (k + 1)*dx;
y2 = rc.top + (i + 1)*dy;
dc.Rectangle(x1, y1, x2, y2);
pp++;
}
}
DeleteObject(m);
SelectObject(dc, oldm);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
}
void CProgramDlg::rndcolor()
{
CClientDC dc(this);
GetClientRect(&rc);
dx = abs(rc.right - rc.left) / 8;
dy = abs(rc.bottom - rc.top) / 8;
for (k = 0; k < 8; k++)
{
for (i = 0; i < 8; i++)
{
cx = rand() % 255;
cy = rand() % 255;
cz = rand() % 255;
cf = RGB(cx, cy, cz);
cx = rand() % 255;
cy = rand() % 255;
cz = rand() % 255;
ck = RGB(cx, cy, cz);
hPenOxy = CreatePen(PS_SOLID, 6, ck);
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
m = CreateSolidBrush(cf);
oldm = (HBRUSH)dc.SelectObject(m);
x1 = rc.left + k*dx;
y1 = rc.top + i*dy;
x2 = rc.left + (k + 1)*dx;
y2 = rc.top + (i + 1)*dy;
dc.Rectangle(x1, y1, x2, y2);
}
}
DeleteObject(m);
SelectObject(dc, oldm);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
}
void CProgramDlg::diagramm()
{
// рисуем на планшете
CClientDC dc(this);
GetClientRect(&rc);
// ширина и высота в равных частях
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);
}
// перекрашиваем область в белое
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);
}
// устанвливаем цвет пера и кисточки
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;
// рисуем прямоугольник
if ((k > 0) && (k < 6)) dc.Rectangle(x1, y1, x2, y2);
}
// восстанавливаем цвета
DeleteObject(m);
SelectObject(dc, oldm);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
}
void CProgramDlg::krdiagramm()
{
for (k = 0; k < 7; k++)
{
cx = rand() % 255;
cy = rand() % 255;
cz = rand() % 255;
c[k] = RGB(cx, cy, cz);
}
// рисуем на планшете
CClientDC dc(this);
GetClientRect(&rc);
//Вычисляем координаты круга
x=x1 = rc.left + 190;
y1 = rc.top + 50;
dx=x2 = rc.right - 190;
dy=y2 = rc.bottom - 40;
cx = (x + dx) / 2;
cy = (y + dy) / 2;
// формируем разноцветье для прямоугольников
// перекрашиваем область в белое
cf = ck = RGB(255, 255, 255);
dc.Rectangle(&rc);
// устанвливаем цвет пера и кисточки
hPenOxy = CreatePen(PS_SOLID, 4, ck);
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
m = CreateSolidBrush(c[0]);
oldm = (HBRUSH)dc.SelectObject(m);
dc.Ellipse(x1,y1,x2,y2);
m = CreateSolidBrush(c[1]);
oldm = (HBRUSH)dc.SelectObject(m);
do {
x3 = x + rand() % abs(cx - x);
x4 = x + rand() % abs(cx - x);
} while (x3 < x4);
do
{
y3 = y + rand() % abs(cy - y);
y4 = y + rand() % abs(cy - y);
}while (y3 > y4);
dc.Pie(x1, y1, x2, y2, x3, y3, x4, y4);
m = CreateSolidBrush(c[2]);
oldm = (HBRUSH)dc.SelectObject(m);
do {
x3 =cx + rand() % abs(cx - dx);
x4 = cx + rand() % abs(cx - dx);
} while (x3 < x4);
do {
y3 = y + rand() % abs(cy - dy);
y4 = y + rand() % abs(cy - dy);
} while (y3 < y4);
dc.Pie(x1, y1, x2, y2, x3, y3, x4, y4);
m = CreateSolidBrush(c[3]);
oldm = (HBRUSH)dc.SelectObject(m);
do {
x3 = x + rand() % abs(cx - x);
x4 = x + rand() % abs(cx - x);
} while (x3 > x4);
do
{
y3 = cy + rand() % abs(cy - dy);
y4 = cy + rand() % abs(cy - dy);
} while (y3 > y4);
dc.Pie(x1, y1, x2, y2, x3, y3, x4, y4);
m = CreateSolidBrush(c[4]);
oldm = (HBRUSH)dc.SelectObject(m);
do {
x3 = cx + rand() % abs(cx - dx);
x4 = cx + rand() % abs(cx - dx);
} while (x4 < x3);
do {
y3 = cy + rand() % abs(cy - dy);
y4 = cy + rand() % abs(cy - dy);
} while (y4 > y3);
dc.Pie(x1, y1, x2, y2, x3, y3, x4, y4);
// восстанавливаем цвета
DeleteObject(m);
SelectObject(dc, oldm);
SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
}
Тепер заходимо в Project->Class Wizard->И обираємо 2 функции: WM_LBUTTONDOWN и WM_RBUTTONDOWN
Потім в функцію натискання лівою кнопки миші мы вставляємо це:
krdiagramm();;
Потім в функцію натискання правою кнопки миші мы вставляємо це:
zastavka();
Комментариев нет:
Отправить комментарий