vc++ mfc를 이용한 그래프 그리기 질문입니다.
하람
레포트로 mfc를 이용해서 3d그래프를 그려야 되는데요. 일단 그리긴 했는데 문제가 있네요.
제가 mfc초보라 잘 모르겠습니다 ㅠㅠ
위에 그림은 제가 구현한 3d그래프 함수입니다.
보시는바와 같이 for문을 이용해서 루프를 돌렸는데 숫자가 100으로 계속 나옵니다.
50단위로 350 300 250 200 이런식으로 줄어들게 하고싶은데 소스를 어떻게 고쳐야되나여?
이 소스는 아래 소스에 void CMy2D그래프View::Drawnumber(CDC *pDC) 함수에 있구요.
그리고 Crect와 배열을 이용해서 바 그래프 모양을 구현할려고 하는데 for 문을 이용해서 루프를 돌리면 같은 모양만 나오고 변경이 안되네요. for문을 이용해서 모양을 변경하면서 루프를 돌릴수있는 소스 좀 말씀해주세요.
2D 그래프View.h 헤더파일에 함수
public:
void Drawgraph(CDC *pDC); // 그리프를 그리는 함수
void Drawline(CDC *pDC); // 눈금과 선을 그리는 함수
void DrawAxes(CDC *pDC); // x축과 y축을 그리는 함수
void Drawnumber(CDC *pDC); // 눈금값을 표현하기 위한 함수
void Create(const CWnd * const parent,CRect * rect);
int i; // 변수선언
int j;
int k;
2D 그래프.View.cpp
void CMy2D그래프View::DrawAxes(CDC *pDC)
{
pDC-MoveTo(50,400); // x축 긋기
pDC-LineTo(450,400);
pDC-MoveTo(50,50); // y축 긋기
pDC-LineTo(50,400);
pDC-MoveTo(80,380); //y축1(3차원)
pDC-LineTo(80,30);
pDC-MoveTo(80,30); //y축2(3차원)
pDC-LineTo(480,30);
pDC-MoveTo(480,30); //x축1(3차원)
pDC-LineTo(480,380);
pDC-MoveTo(80,380); //x축2(3차원)
pDC-LineTo(480,380);
}
void CMy2D그래프View::Drawline(CDC *pDC)
{
// 가로 눈금선
int nStepY = 50; // 수직방향 간격
for(int i = 1; i 8; i++) {
pDC-MoveTo(40, i * nStepY);
pDC-LineTo(50, i * nStepY);
}
// 3차원 세로 대각선
int nStepY1 = 50; // 수직방향 간격
for(int j= 1; j 9; j++) {
pDC-MoveTo(50, j * nStepY1);
pDC-LineTo(80, j * nStepY1 - 20);
}
// 3차원 가로 대각선
int nStepY2 = 50;
for(int k= 1; k 10; k++) {
pDC-MoveTo(k * nStepY2, 400 );
pDC-LineTo(k * nStepY2 + 30, 380 );
}
}
void CMy2D그래프View::Drawnumber(CDC *pDC)
{
// 눈금의 값
CString temp;
int x=50;
int nStepY=50;
for(int i = 1; i 8; i++) {
for(int j = 8; j 1; j--) {
temp.Format(_T(%d), j*x);
pDC-TextOut(10,i*nStepY, temp);
}
}
}
void CMy2D그래프View::Drawgraph(CDC *pDC)
{
// 그래프
CBrush *myBrush;
CRect r(100, 300, 150, 400 );
COLORREF color[4] = {
RGB(0,0,0),
RGB(255,0,0),
RGB(0,255,0),
RGB(0,0,255),
};
for(i=0;i4;i++) {
myBrush = new CBrush(color[i]);
pDC-FillRect(r,myBrush);
r.OffsetRect(50,0);
delete myBrush;
}
CClientDC dc(this);
CPoint point[5];
point[0].x = 100;
point[0].y = 300;
point[1].x = 130;
point[1].y = 280;
point[2].x = 180;
point[2].y = 280;
point[3].x = 150;
point[3].y = 300;
point[4].x = 100;
point[4].y = 300;
CBrush brush;
brush.CreateSolidBrush(RGB(0,0,0));
CRgn rgn2, rgn;
rgn2.CreatePolygonRgn(point,5,WINDING);
rgn.CreateRectRgn(0,0,0,0);
rgn.CopyRgn(&rgn2);
rgn.OffsetRgn(0,0);
dc.FillRgn(&rgn,&brush);
rgn.OffsetRgn(50,0); // 클라이언트의 기준이 아니라 방금 그렸던 곳을 기준으로 이동된다
CBrush brush2;
brush2.CreateSolidBrush(RGB(255,0,0));
dc.FillRgn(&rgn,&brush2);
rgn.OffsetRgn(50,0);
CBrush brush3;
brush3.CreateSolidBrush(RGB(0,255,0));
dc.FillRgn(&rgn,&brush3);
rgn.OffsetRgn(50,0);
CBrush brush4;
brush4.CreateSolidBrush(RGB(0,0,255));
dc.FillRgn(&rgn,&brush4);
rgn.OffsetRgn(50,0);
CClientDC dc2(this);
CPoint point2[5];
point[0].x = 300;
point[0].y = 400;
point[1].x = 300;
point[1].y = 300;
point[2].x = 330;
point[2].y = 280;
point[3].x = 330;
point[3].y = 380;
point[4].x = 300;
point[4].y = 400;
CBrush brurush brush5;
brush5.CreateSolidBrush(RGB(0,0,255));
CRgn rgn3, rgn4;
rgn3.CreatePolygonRgn(point,5,WINDING);
rgn4.CreateRectRgn(0,0,0,0);
rgn.CopyRgn(&rgn3);
rgn.OffsetRgn(0,0);
dc.FillRgn(&rgn,&brush5);
}
void CMy2D그래프View::OnDraw(CDC* pDC)
{
CMy2D그래프Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
DrawAxes(pDC); // x, y축을 그린다
Drawline(pDC); // 눈금선과 대각선을 그린다
Drawnumber(pDC); // 눈금의 값을 적는다
Drawgraph(pDC); // 그래프를 그린다
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2655433 | html텍스트박 트위터처럼.... (1) | 핑크빛입술 | 2024-05-19 |
2655406 | 워드프레스 다중사이트.. | 하예라 | 2024-05-19 |
2655352 | 동영상 플래이어 (2) | 머슴밥 | 2024-05-19 |
2655320 | GList를 사용하는데 에러가 발생합니다. 도와주세요~~ | 찬늘봄 | 2024-05-18 |
2655291 | 자바 초보입문했는데요~~ | 이퓨리한나 | 2024-05-18 |
2655235 | xml연동 갤러리 생성관련 질문입니다. (2) | 난새 | 2024-05-18 |
2655205 | C++ 포인터 if | WatchOut | 2024-05-17 |
2655150 | 모바일 웹 환경을 구축을 할때의 콘텐츠 이미지 사이즈 (2) | 레오 | 2024-05-17 |
2655122 | 엥;; getMonth() 왜이렇게 나타나죠? (6) | 초코맛캔디 | 2024-05-17 |
2655095 | 구구단 질문이요 (3) | 하예진 | 2024-05-16 |
2655064 | RSA.js 파일 구할 수 있을가요.. 있으신분 첨부좀 해주세요.. | 얀 | 2024-05-16 |
2655009 | 유료테마 사려고 하는데 데모파일이 없다면 | 에드가 | 2024-05-16 |
2654980 | cximage를 통해 jpg파일을 받아와 윈도우에 뿌리는 프로그램을 만드는중인데 꼬였습니다. (4) | 하린 | 2024-05-15 |
2654922 | 고도몰 3차 4차 이상 카테고리 표출되게.. (7) | 유메 | 2024-05-15 |
2654874 | 제이쿼리랑 자바스크립트 학원 추천좀부탁드릴게요 (7) | 향율 | 2024-05-14 |
2654843 | 탭버튼 코딩시 마우스오버가 접근성에 왜 어긋나는지 궁금합니다... (1) | 걸때 | 2024-05-14 |
2654814 | 중국어 인코딩 관련해서 질문요,,, (5) | 화이트캣 | 2024-05-14 |
2654783 | 이 알고리즘 한줄한줄 해석좀 부탁드립니다. (1) | 요루 | 2024-05-14 |
2654764 | t 탭 질문이여. (3) | 눈 | 2024-05-13 |
2654737 | 크롬 인쇄하기 오류 (멈춤현상) | 아라 | 2024-05-13 |