четверг, 27 апреля 2017 г.

Круговая диаграмма

За основу мы возьмем сообщение про пострение гистограммы на С++ которую я недавноопубликовал.







Создаем планшетку с стандартными настройками и называем ее программой

Заходим в Обозревателе решений и выбираем там папочку файлы заголовков, а в ней ProgrammDlg.h

В самом низу пишем :

Частная территория:

хрень hPenOxy, hOldPen;

HFONT держать, hNew, хбк;
HBRUSH м oldm;
COLORREF МВ, КФК, с[25];

CPen д oldd;

CBitmap рис;
crect тогда РК, Вт, кВт[12];

cstring в мс, т, Z;

слово int х1, У1, х2, У2;
инт матрицы[50][50];
инт ов, РВ, к, Я, д, СХ, СУ, CZ, ДХ, ды;
боол ФГ;
общественные:

пустота заставка();
пустота rndcolor();
пустота Диаграмма();
пустота krdiagramm();

пустота afx_msg OnLButtonDown(uint с nFlags, точка соединения);
пустота afx_msg OnRButtonDown(uint с nFlags, точка соединения);


Теперь заходим в Обозревателе решений и выбираем там папочку исходных файлов, а в ней (название программы)...Dlg.cpp (с таким окончанием)
Находим конец и там вставляем все это:

пустота CProgramDlg::заставка()
{
CClientDC DC(в этом);
GetClientRect(&РХ);

ДХ = АБС(РЦ.право - радиоуправляемый.слева) / 5;
ды = АБС(РЦ.дно - радиоуправляемый.сверху) / 5;

инт ПП = 0;
для (K = 0; К < 5; к++)
{
для (я = 0; я < 5; я++)
{

если (пп % 2 == 0)
{
кф = 0x0000DDFF;
СК = 0x00C4563D;
}
еще
{
СК = 0x0000DDFF;
кф = 0x00C4563D;
}
hPenOxy = CreatePen(PS_SOLID, 6, КФК);
hOldPen = (хрень)Выделитьобъект(постоянного тока, hPenOxy);
м = CreateSolidBrush(кф);
oldm = (HBRUSH)постоянного тока.Выделитьобъект(м);

х1 = РЦ.слева + к*ДХ;
У1 = РЦ.топ + я*ды;
х2 = РК.слева + (к + 1)*ДХ;
У2 = РЦ.топ + (я + 1)*ды;

постоянного тока.Прямоугольник(х1, У1, х2, У2);
ПП++;
}
}

Удалитьобъект(м);
Выделитьобъект(ДК, oldm);
Выделитьобъект(ДК, hOldPen);
Удалитьобъект(hPenOxy);

}


пустота CProgramDlg::rndcolor()
{
CClientDC DC(в этом);
GetClientRect(&РХ);

ДХ = АБС(РЦ.право - радиоуправляемый.слева) / 8;
ды = АБС(РЦ.дно - радиоуправляемый.топ) / 8;


для (K = 0; к < 8; к++)
{
для (я = 0; я < 8; я++)
{

СХ = Ранд() % 255;
тИЦ = Ранд() % 255;
КЗ = Ранд() % 255;
кф = РГБ(СХ, СУ, CZ, Чехия);

СХ = Ранд() % 255;
тИЦ = Ранд() % 255;
КЗ = Ранд() % 255;
СК = РГБ(СХ, СУ, CZ, Чехия);


hPenOxy = CreatePen(PS_SOLID, 6, КФК);
hOldPen = (хрень)Выделитьобъект(постоянного тока, hPenOxy);
м = CreateSolidBrush(кф);
oldm = (HBRUSH)постоянного тока.Выделитьобъект(м);

х1 = РЦ.слева + к*ДХ;
У1 = РЦ.топ + я*ды;
х2 = РК.слева + (к + 1)*ДХ;
У2 = РЦ.топ + (я + 1)*ды;

постоянного тока.Прямоугольник(х1, У1, х2, У2);

}
}

Удалитьобъект(м);
Выделитьобъект(ДК, oldm);
Выделитьобъект(ДК, hOldPen);
Удалитьобъект(hPenOxy);
}




пустота CProgramDlg::Диаграмма()
{
// рисуем на планшете
CClientDC DC(в этом);
GetClientRect(&РХ);

// ширина и высота в равных частях
ДХ = АБС(РЦ.право - радиоуправляемый.слева) / 7;
ды = АБС(РЦ.дно - радиоуправляемый.сверху) / 7;

// формируем разноцветье для прямоугольников
для (K = 0; к < 7; к++)
{
СХ = Ранд() % 255;
тИЦ = Ранд() % 255;
КЗ = Ранд() % 255;
с[K] = РГБ(СХ, СУ, CZ, Чехия);
}

// перекрашиваем в область белое
кф = СК = РГБ(255, 255, 255);
постоянного тока.Прямоугольник (пик);

// прорисовываем прямоугольники разного цвета
для (K = 0; к < 6; к++)
{
// крайние только белого света
если ((к > 0) && (к < 6))
{
кф = СК = с[K];
СК = РГБ(255, 255, 255);
}

// устанвливаем цвет пера и кисточки
hPenOxy = CreatePen(PS_SOLID, 24, СК);
hOldPen = (хрень)Выделитьобъект(постоянного тока, hPenOxy);
м = CreateSolidBrush(кф);
oldm = (HBRUSH)постоянного тока.Выделитьобъект(м);

// размеры очередного прямоугольника
х1 = РЦ.слева + к*ДХ;
У1 = РЦ.топ + (слчис() % 6 + 1)*ды - Ранд() % ды;
х2 = РК.слева + (к + 1)*ДХ;
У2 = РЦ.дно - ды + 50;

// рисуем прямоугольник
если ((к > 0) && (к < 6)) постоянного тока.Прямоугольник(х1, У1, х2, У2);
}

// восстанавливаем цвета
Удалитьобъект(м);
Выделитьобъект(ДК, oldm);
Выделитьобъект(ДК, hOldPen);
Удалитьобъект(hPenOxy);

}




пустота CProgramDlg::krdiagramm()
{
для (K = 0; к < 7; к++)
{
СХ = Ранд() % 255;
тИЦ = Ранд() % 255;
КЗ = Ранд() % 255;
с[K] = РГБ(СХ, СУ, CZ, Чехия);
}

// рисуем на планшете
CClientDC DC(в этом);
GetClientRect(&РХ);


//Вычисляем координаты круга

х=х1 = РЦ.левый + 190;
У1 = РЦ.Топ + 50;
ДХ=х2 = РК.право - 190;
dу=У2 = РЦ.дно - 40;


СХ = (х + ДХ) / 2;
тИЦ = (у + dу) / 2;
// формируем разноцветье для прямоугольников


// перекрашиваем в область белое
кф = СК = РГБ(255, 255, 255);
постоянного тока.Прямоугольник (пик);

// устанвливаем цвет пера и кисточки
hPenOxy = CreatePen(PS_SOLID, 4, КФК);
hOldPen = (хрень)Выделитьобъект(постоянного тока, hPenOxy);
м = CreateSolidBrush(с[0]);
oldm = (HBRUSH)постоянного тока.Выделитьобъект(м);
постоянного тока.Эллипс(х1,У1,х2,У2);

м = CreateSolidBrush(с[1]);
oldm = (HBRUSH)постоянного тока.Выделитьобъект(м);
делать {
х3 = х + слчис() % АБС(СХ - х);
х4 = х + слчис() % АБС(СХ - х);
} а (х3 < х4);
делать
{
У3 = г + слчис() % АБС(тИЦ - г);
у4 = г + слчис() % АБС(тИЦ - г);
}а (У3 > у4);

постоянного тока.Пирог(х1, У1, х2, У2, х3, У3, х4, у4);



м = CreateSolidBrush(с[2]);
oldm = (HBRUSH)постоянного тока.Выделитьобъект(м);
делать {
х3 =СХ + слчис() % АБС(СХ - ДХ);
х4 = СХ + слчис() % АБС(СХ - ДХ);
} а (х3 < х4);
делать {
У3 = г + слчис() % АБС(тИЦ - ды);
у4 = г + слчис() % АБС(тИЦ - ды);
} а (У3 < у4);

постоянного тока.Пирог(х1, У1, х2, У2, х3, У3, х4, у4);
м = CreateSolidBrush(с[3]);
oldm = (HBRUSH)постоянного тока.Выделитьобъект(м);
делать {
х3 = х + слчис() % АБС(СХ - х);
х4 = х + слчис() % АБС(СХ - х);
} а (х3 > х4);
делать
{
У3 = тИЦ + слчис() % АБС(тИЦ - ды);
у4 = тИЦ + слчис() % АБС(тИЦ - ды);
} а (У3 > у4);

постоянного тока.Пирог(х1, У1, х2, У2, х3, У3, х4, у4);


м = CreateSolidBrush(с[4]);
oldm = (HBRUSH)постоянного тока.Выделитьобъект(м);
делать {
х3 = СХ + слчис() % АБС(СХ - ДХ);
х4 = СХ + слчис() % АБС(СХ - ДХ);
} а (х4 < х3);
делать {
У3 = тИЦ + слчис() % АБС(тИЦ - ды);
у4 = тИЦ + слчис() % АБС(тИЦ - ды);
} а (у4 > У3);

постоянного тока.Пирог(х1, У1, х2, У2, х3, У3, х4, у4);


// восстанавливаем цвета
Удалитьобъект(м);
Выделитьобъект(ДК, oldm);
Выделитьобъект(ДК, hOldPen);
Удалитьобъект(hPenOxy);


}


Теперь идем по пути : проект-класс>Мастер->И выбираем 2 функции: WM_LBUTTONDOWN и WM_Rраспашной


В WM_LBUTTONDOWN Далее мы вставляем это:

krdiagramm();

Далее в WM_Rраспашной мы вставляем это:

 заставка();

Комментариев нет:

Отправить комментарий