с[0] = 0x000000FF;
с[1] = 0x0000A5FF;
с[2] = 0x0000DDFF;
с[3] = 0x00008000;
с[4] = 0x00FFFF00;
с[5] = 0x00FF0000;
с[6] = 0x00D30094;
Теперь добавляем операцию, что бы не грузить память компьютера и оптимизировать программу.
В ProgramDlg.ч пишем недействительным рисование(инт п), а в ProgramDlg.срр в самом низу обозначаем значение процесса рисование:
пустота CProgramDlg::рисование(инт п)
{
CClientDC DC(вэтом);
GetClientRect(&РХ);
Вт.слева = РЦ.левый + 200;
Вт.право = РЦ.справа - 150;
Вт.топ = РЦ.топ + 110;
Вт.дна = РК.дно - 50;
постоянного тока.FillSolidRect(&RC, в РГБ(255, 255, 255));
х1 = Вт.левый + 70;
У1 = Вт.ТОП + 20;
х2 = Вт.право - 70;
У2 = Вт.дно - 10;
кф = 0x0000DDFF;
СК = 0x00800000;
hPenOxy = CreatePen(PS_SOLID, 6, КФК);
hOldPen = (хрень)Выделитьобъект(постоянного тока, hPenOxy);
м = CreateSolidBrush(кф);
oldm = (HBRUSH)постоянного тока.Выделитьобъект(м);
если (п == 0) постоянного тока.Прямоугольник(х1, У1, х2, У2);
еще в постоянного тока.Эллипс(х1, У1, х2, У2);
если ((р == 2) || (п == 3))
{
радиоуправляемый.левый += 180;
радиоуправляемый.правой= 180;
радиоуправляемый.ТОП += 20;
радиоуправляемый.снизу= 20;
ДХ = АБС(РЦ.право - радиоуправляемый.слева) / 7;
ды = АБС(РЦ.дно - радиоуправляемый.сверху) / 7;
для (К = 0; к < 7; к++)
{
hPenOxy = CreatePen(PS_SOLID, 2, с[K]);
hOldPen = (хрень)Выделитьобъект(постоянного тока, hPenOxy);
м = CreateSolidBrush(с[K]);
oldm = (HBRUSH)постоянного тока.Выделитьобъект(м);
//постоянного тока.Прямоугольник(РЦ.левый+к*ДХ, радиоуправляемый.топ, радиоуправляемый.левый + (к+1)*ДХ, ДУ.дно);
//постоянного тока.Прямоугольник(РЦ.слева, радиоуправляемый.топ + к*ды, ру.право, радиоуправляемый.топ + (к+1)*ды);
если(п==2) постоянного тока.Прямоугольник(РЦ.слева+к*ДХ/2, радиоуправляемый.топ + к*ды/2, радиоуправляемый.правильно-к*ДХ/2, радиоуправляемый.дно-к*ды/2);
еще в постоянного тока.Эллипс(РЦ.слева + к*ДХ / 2, радиоуправляемый.топ + к*ды / 2, радиоуправляемый.правильно - к*ДХ / 2, радиоуправляемый.дно - к*ды / 2);
}
}
если (п == 4)
{
ДХ = АБС(РЦ.право - радиоуправляемый.слева) / 7;
ды = АБС(РЦ.дно - радиоуправляемый.сверху) / 7;
для (К = 0; к < 7; к++)
{
//Вт.слева = РЦ.слева+к*ДХ;
//Вт.право = РЦ.слева+(к+1)*ДХ;
Вт.топ = РЦ.топ + к*ды;
Вт.дна = РК.топ + (к + 1)*ды;
Вт.слева = РЦ.слева;
Вт.право = РЦ.права;
//Вт.топ = РЦ.топ;
//Вт.дна = РК.дно;
постоянного тока.FillSolidRect(&ш, с[K]);
}
hPenOxy = CreatePen(PS_SOLID, 7, РГБ(255, 255, 255));
hOldPen = (хрень)Выделитьобъект(постоянного тока, hPenOxy);
для (К = 0; к < 7; к++)
{
постоянного тока.Метод moveto(радиоуправляемый.левый + к*ДХ, радиоуправляемый.сверху);
постоянного тока.Концы lineto(РЦ.левый + к*ДХ, радиоуправляемый.дно);
постоянного тока.Метод moveto(радиоуправляемый.слева, радиоуправляемый.топ + к*ды);
постоянного тока.Концы lineto(РЦ.право, радиоуправляемый.топ + к*ды);
}
}
Удалитьобъект(м);
Выделитьобъект(ДК, oldm);
Выделитьобъект(ДК, hOldPen);
Удалитьобъект(hPenOxy);
}
После этого мы добавили процедуру рисования , которую можно заменить словом : рисование();
Далее в ресурс решения планшетку копируем и создаем еще одну , которую Dialog1 называем
Дописіваем в код Далее Dialog1.cpp
//Весь СРР не
пустота CDialog1::рисование(инт п)
{
CClientDC DC(вэтом);
GetClientRect(&РХ);
Вт.слева = РЦ.левый + 200;
Вт.право = РЦ.справа - 150;
Вт.топ = РЦ.топ + 110;
Вт.дна = РК.дно - 50;
постоянного тока.FillSolidRect(&RC, в РГБ(255, 255, 255));
х1 = Вт.левый + 70;
У1 = Вт.ТОП + 20;
х2 = Вт.право - 70;
У2 = Вт.дно - 10;
кф = 0x0000DDFF;
СК = 0x00800000;
hPenOxy = CreatePen(PS_SOLID, 6, КФК);
hOldPen = (хрень)Выделитьобъект(постоянного тока, hPenOxy);
м = CreateSolidBrush(кф);
oldm = (HBRUSH)постоянного тока.Выделитьобъект(м);
если (п == 0) постоянного тока.Прямоугольник(х1, У1, х2, У2);
еще в постоянного тока.Эллипс(х1, У1, х2, У2);
если ((р == 2) || (п == 3))
{
радиоуправляемый.левый += 180;
радиоуправляемый.правой= 180;
радиоуправляемый.ТОП += 20;
радиоуправляемый.снизу= 20;
ДХ = АБС(РЦ.право - радиоуправляемый.слева) / 7;
ды = АБС(РЦ.дно - радиоуправляемый.сверху) / 7;
для (К = 0; к < 7; к++)
{
hPenOxy = CreatePen(PS_SOLID, 2, с[K]);
hOldPen = (хрень)Выделитьобъект(постоянного тока, hPenOxy);
м = CreateSolidBrush(с[K]);
oldm = (HBRUSH)постоянного тока.Выделитьобъект(м);
//постоянного тока.Прямоугольник(РЦ.левый+к*ДХ, радиоуправляемый.топ, радиоуправляемый.левый + (к+1)*ДХ, ДУ.дно);
//постоянного тока.Прямоугольник(РЦ.слева, радиоуправляемый.топ + к*ды, ру.право, радиоуправляемый.топ + (к+1)*ды);
если (п == 2) постоянного тока.Прямоугольник(РЦ.слева + к*ДХ / 2, радиоуправляемый.топ + к*ды / 2, радиоуправляемый.правильно - к*ДХ / 2, радиоуправляемый.дно - к*ды / 2);
еще в постоянного тока.Эллипс(РЦ.слева + к*ДХ / 2, радиоуправляемый.топ + к*ды / 2, радиоуправляемый.правильно - к*ДХ / 2, радиоуправляемый.дно - к*ды / 2);
}
}
если (п == 4)
{
ДХ = АБС(РЦ.право - радиоуправляемый.слева) / 7;
ды = АБС(РЦ.дно - радиоуправляемый.сверху) / 7;
для (К = 0; к < 7; к++)
{
//Вт.слева = РЦ.слева+к*ДХ;
//Вт.право = РЦ.слева+(к+1)*ДХ;
Вт.топ = РЦ.топ + к*ды;
Вт.дна = РК.топ + (к + 1)*ды;
Вт.слева = РЦ.слева;
Вт.право = РЦ.права;
//Вт.топ = РЦ.топ;
//Вт.дна = РК.дно;
постоянного тока.FillSolidRect(&ш, с[K]);
}
hPenOxy = CreatePen(PS_SOLID, 7, РГБ(255, 255, 255));
hOldPen = (хрень)Выделитьобъект(постоянного тока, hPenOxy);
для (К = 0; к < 7; к++)
{
постоянного тока.Метод moveto(радиоуправляемый.левый + к*ДХ, радиоуправляемый.сверху);
постоянного тока.Концы lineto(РЦ.левый + к*ДХ, радиоуправляемый.дно);
постоянного тока.Метод moveto(радиоуправляемый.слева, радиоуправляемый.топ + к*ды);
постоянного тока.Концы lineto(РЦ.право, радиоуправляемый.топ + к*ды);
}
}
Удалитьобъект(м);
Выделитьобъект(ДК, oldm);
Выделитьобъект(ДК, hOldPen);
Удалитьобъект(hPenOxy);
}
пустота CDialog1::OnRButtonDown(uint с nFlags, точка соединения точка)
{
// Todo: добавьте свой код обработчика сообщение здесь и/или вызова по умолчанию
CProgramDlg длг;
EndDialog(0);
длг.Метод domodal();
Класса cdialog::OnRButtonDown(nFlags, точки);
}
пустота CDialog1::метода onpaint()
{
если (IsIconic())
{
CPaintDC DC(вэтом); // контекст устройства для рисования
Метод sendmessage(WM_ICONERASEBKGND, оператора reinterpret_cast<параметр wparam>(округ Колумбия.GetSafeHdc()), 0);
// Выравнивание значка по центру клиентского прямоугольника
инт cxIcon = интерфейсы getsystemmetrics(SM_CXICON);
инт cyIcon = интерфейсы getsystemmetrics(SM_CYICON);
Crect тогда вильный;
GetClientRect(&rect и наоборот);
Тип int х = (вильный.Ширина() - cxIcon + 1) / 2;
инт г = (вильный.Высота() - cyIcon + 1) / 2;
// Нарисуйте значок
постоянного тока.DrawIcon(х, Y, m_hIcon);
}
еще
{
Рисование(4);
Класса Cdialog::Метода Onpaint();
}
}
У нас получилось интро. Далее в мастер-класс добавляем событие WM_RBUTTONDOWN и там пишем :
Комментариев нет:
Отправить комментарий