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

Программа "Квадратная мишень"

Программа "Квадратная мишень"

 1. Подготовка к работе

 
 1) Открываем "Visual Studio" и устанавливаем настройки, что соответствуют нашему проекту (MFC Application)
 
2. Начинаем работать



1) открываем ProgramDlg.h и опускаемся в самый низ системного кода
2) Отодвигаем "};" и пишем: 
protected:
HICON m_hIcon;

// Созданные функции схемы сообщений
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()

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;

3) Открываем файл ProgramDlg.cpp
4) Под строкой "CDialog::DoDataExchange(pDX);" и пишем:


// Цвета радуги:


c[0] = 0x000000FF;
c[1] = 0x00008CFF;
c[2] = 0x0000FFD0;
c[3] = 0x00008000;
c[4] = 0x00CEE23A;
c[5] = 0x00FF0000;
c[6] = 0x008B0B8B;


fg = true;



5) Находим строку "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
{
 
  CClientDC dc(this);
  GetClientRect(&rc);

  dx = abs(rc.right - rc.left) / 7;

  dy = abs(rc.bottom - rc.top) / 7;

  float h;

  h = 9 / 2;


  for (k = 0; k < 7; k++)

  {
   hPenOxy = CreatePen(PS_SOLID, 2,c[6-k]);
   hOldPen = (HPEN)SelectObject(dc, hPenOxy);
   m = CreateSolidBrush(c[6-k]);
   oldm = (HBRUSH)dc.SelectObject(m);
   //dc.Rectangle(rc.left+k*dx, rc.top, rc.left + (k+1)*dx, rc.bottom);
   dc.Rectangle(150+rc.left+k*dx/h,60+ rc.top + k*dy/h, rc.right-k*dx/h-150, rc.bottom - k*dy/h-60);
  }
 
  hPenOxy = CreatePen(PS_SOLID, 6, RGB(255,255,255));
  hOldPen = (HPEN)SelectObject(dc, hPenOxy);
  /*
  for (k = 0; k < 6; k++)
  {
   dc.MoveTo(rc.left + (k + 1)*dx, rc.top);
   dc.LineTo(rc.left + (k + 1)*dx, rc.bottom);
   dc.MoveTo(rc.left, rc.top + (k + 1)*dy);
   dc.LineTo(rc.right, rc.top + (k + 1)*dy);
  }
  */

  DeleteObject(m);

  SelectObject(dc, oldm);
  SelectObject(dc, hOldPen);
  DeleteObject(hPenOxy);
 
 
  CDialog::OnPaint();
}


 

 
Программа готова!
Осталось только скомпилировать проект

 
 
 
Информація була взята звідси https://www.miwzua.com/

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

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