검색어 '자유곡선'에 대한 1 개의 검색 결과

  1. 2009/12/02 MFC그림그리기 by dhappy

MFC그림그리기

2009/12/02 16:12 / 컴퓨터

비트맵 다룰줄몰라서 엄청 헤맸는데
엄청 쉬운 법 발견...ㅋㅋㅋ

일단 배경 사각형을 그리려면 onpaint()를 오버라이딩해서
void sdf::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 // TODO: 여기에 메시지 처리기 코드를 추가합니다.

 CPen pen;
 pen.CreatePen(PS_SOLID ,1,RGB(0,0,0));
 dc.SelectObject(pen);
 dc.MoveTo(CPoint(50,50));
 dc.LineTo(CPoint(250,50));
 dc.MoveTo(CPoint(250,50));
 dc.LineTo(CPoint(250,250));
 dc.MoveTo(CPoint(250,250));
 dc.LineTo(CPoint(50,250));
 dc.MoveTo(CPoint(50,250));
 dc.LineTo(CPoint(50,50));
}
하면 사각형이 그려진다~

마우스를 클릭해서 움직이면 그림이 그려지게 하려면??
뭐 로직은 사람마다 다르겠지만
왼쪽 버튼 누를때 flag, 왼쪽버튼 뗄때 flag설정하여
mousemove를 오버라이딩해버리면 된다

void sdf::OnLButtonDown(UINT nFlags, CPoint point)
{
 // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
 isdraw = true;
 m_StartPoint = point;
 // TODO: 여기에 메시지 처리기 코드를 추가합니다. //todo
 CDialog::OnLButtonDown(nFlags, point);
}

void sdf::OnLButtonUp(UINT nFlags, CPoint point)
{
 // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
 //m_EndPoint = point;
 isdraw = false;
 CDialog::OnLButtonUp(nFlags, point);
}

void sdf::OnMouseMove(UINT nFlags, CPoint point)
{
 // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
 if(isdraw)
 {
 
  m_EndPoint = point;
  CClientDC dc(this);
  CPen pen;
  pen.CreatePen(PS_SOLID ,1,RGB(255,0,0));  //펜 색을 빨간색으로
  dc.SelectObject(pen);
  dc.MoveTo(m_StartPoint);
  dc.LineTo(m_EndPoint);
  m_StartPoint = m_EndPoint;
 //그리기

 }
 CDialog::OnMouseMove(nFlags, point);
}

사용자 삽입 이미지

2009/12/02 16:12 2009/12/02 16:12
dhappy 이 작성.