С++ Диагонали

Всем привет!Сегодня мы будем делать легенькую программку,после включения которой,появиться диаграмма с 4 секторами(разных цветов).Приступим...




Для начала качаем MicrosoftVisualStudio,для этого нажмите на эту кнопку
Потом скачиваем архив с начальным кодом, вот этот архив

Теперь открываем VisualStudio,заходим в Обозреватель решений.Нам потребуется 2 файла:
ProgramDlg.cpp u ProgramDlg.h

Заходим в ProgramDlg.h , опускаемся в самый низ,и там пишем:
------------------------------------------------------------------------

private:

HPEN hPenOxy, hOldPen;
HBRUSH m, oldm, brush;
HPEN pen;

COLORREF cf, c[25];

CPen d, oldd;
CBitmap pic;
CRect rc, w, kw[12];

CString ms, t, z;

int Matrix[50][50];
int RH, RW, k, i, j, cx, cy, dx, dy;
bool fg;

------------------------------------------------------------------------





Теперь заходим в ProgramDlg.cpp 

Находим строку :  void CProgramDlg::DoDataExchange(CDataExchange* pDX)

И там стираем вот это : 

        c[0] = 0xFF00FF;
c[1] = 0xFFA500;
c[2] = 0xFFFF;
c[3] = 0x0C7800;
c[4] = 0x005690;
c[5] = 0xFFFF0000;
c[6] = 0xCC00AA;
c[7] = 0xAA5600;
c[8] = 0xAAAA;
c[9] = 0x00CC00;
c[10] = 0x090056;
c[11] = 0xF0F0F0;



Теперь доходим до строки :     void CProgramDlg::OnPaint()

И там пишем: 

-------------------------------------------------------------

{
if (IsIconic())
{
CPaintDC dc(this); // контекст устройства для рисования

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// Выравнивание значка по центру клиентского прямоугольника
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Нарисуйте значок
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();

CClientDC dc(this);
GetClientRect(&rc);

//HPEN hPenOxy, hOldPen;  - включить перо рисование
hPenOxy = CreatePen(PS_SOLID, 5, RGB(155,20,168));
hOldPen = (HPEN)SelectObject(dc, hPenOxy);
int x1, x2, x3, x4, y1, y2, y3, y4;
dc.FillSolidRect(&rc, 0x00FFFFFF);
hPenOxy = CreatePen(PS_SOLID, 3, 0x00FFFFFF);
hOldPen = (HPEN)SelectObject(dc, hPenOxy);

x1 = rc.left + 170;
y1 = rc.top + 10;
x2 = rc.right - 170;
y2 = rc.bottom - 10;

// определить цвет рисования обьекта
m = CreateSolidBrush(0x0000BBFF);
oldm = (HBRUSH)dc.SelectObject(m);

dc.Ellipse(x1, y1, x2, y2);

// определить цвет рисования обьекта
m = CreateSolidBrush(0x00E16941);
oldm = (HBRUSH)dc.SelectObject(m);

x3 = x2;
y3 = (y1 + y2) / 2 + 20;
x4 = (x1 + x2)/2;
y4 = y1;

dc.Pie(x1, y1, x2, y2, x3, y3, x4, y4);

// определить цвет рисования обьекта
m = CreateSolidBrush(0x002E67F3);
oldm = (HBRUSH)dc.SelectObject(m);

x3 = x2-50;
y3 = y2;
x4 = x2;
y4 = (y1 + y2) / 2 + 20;

dc.Pie(x1, y1, x2, y2, x3, y3, x4, y4);

// определить цвет рисования обьекта
m = CreateSolidBrush(0x00C4A69A);
oldm = (HBRUSH)dc.SelectObject(m);

x3 = x1;
y3 = y2-50;
x4 = x2-50;
y4 = y2;

dc.Pie(x1, y1, x2, y2, x3, y3, x4, y4);

// рисование скругленного прямоугольника
//rc.DeflateRect(5, 5);
//dc.RoundRect(&rc, CPoint(45, 45));

SelectObject(dc, hOldPen);
DeleteObject(hPenOxy);
DeleteObject(m);
SelectObject(dc, oldm);

}
}

----------------------------------------------------------

Далее нажимаем на Локальный отладчик Windows , и у нас получается :



Спасибо за внимание :) Некоторые материалы взяты с этого сайта 

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

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