суббота, 8 апреля 2017 г.

3 ПРОГРАММЫ В ОДНОЙ.





Для начала , добавляем цвета радуги из предедущих програм.

с[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 и там пишем :

 CProgramDlg длг;
EndDialog(0);
длг.Метод domodal();
     Класса cdialog::OnRButtonDown(nFlagsточки);


НАША ПРОГРАММА , ГОТОВА !

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

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