Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Смещение при прорисовке, Смещение шестиугольников 
:(
    Опции темы
Marchena
Дата 12.10.2012, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 12.10.2012

Репутация: нет
Всего: нет



MFC.
Необходимо построить фигуру как на картинке, использовал черепашью графику. Но когда прорисовывается каждый 6угольник он смещается по оси у. Не могу понять почему так.
user posted image
Код

#include <afxwin.h>
#include <locale.h>
#include <math.h>


class CMyMainWnd : public CFrameWnd
{
public:
CMyMainWnd()
{ 
setlocale(LC_ALL,"rus");
Create(NULL,(CString)"Картинка");
}
afx_msg void OnPaint();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
DECLARE_MESSAGE_MAP()
};
class CMyApp : public CWinApp{
public:
CMyApp(){};

virtual BOOL InitInstance() 
{
m_pMainWnd=new CMyMainWnd();
m_pMainWnd->ShowWindow(SW_SHOW);
return TRUE;
}
};

BEGIN_MESSAGE_MAP(CMyMainWnd, CFrameWnd)
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()

END_MESSAGE_MAP()

CMyApp theApp;

int x=150,y=200;
float a;
const float L=50;


void forward(){
const double RadPerDeg=0.017453292519943;
x=x+L*cos(RadPerDeg*a);
y=y+L*sin(RadPerDeg*a);
}

void turn(float angle) 
{a+=angle;
}




void CMyMainWnd::OnPaint()
{    CPaintDC* pDC=new CPaintDC(this); 
        
pDC->MoveTo(x,y);
            for(int j=0;j<18;j++){
            for(int k=0;k<6;k++){
                turn(60);        
                forward();
                pDC->LineTo(x,y);
                Sleep(10);
            }
            turn(0);
        }
            
              
   UpdateWindow();

     }

void CMyMainWnd::OnLButtonDown(UINT nFlags, CPoint point)
{
     POINT pt;
    GetCursorPos(&pt);
     ScreenToClient(&pt);
     int x1Pos = pt.x; 
     int y1Pos = pt.y;
     Invalidate (0);
}

PM MAIL   Вверх
Earnest
Дата 12.10.2012, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Это у тебя x, y - глобальные переменные, а ф-и turn и forward их изменяют? Круто!

Особо в таком коде разбираться не хочется, но, логично предположить, что раз 6-угольник рисуется не там, то x-y к началу рисования равны не тому, что задумывалось. Или просто MoveTo нужно делать для каждого 6-угольника, а не один раз. 


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.