c语言二维坐标数据旋转,[C语言]二维图形基本几何变换的实现

任意给定一个三角形, 对它进行平移,放大,两种变换.

(1)将三角形的坐标存放到数组中

(2)先画出原始的三角形,再进行变换,画出变换后的形状

(3)建议:

a)左键双击屏幕,画出三角形

void CTranslationView::DrawPolyline(CPoint  spt[],int n)

{

RedrawWindow();

CDC* pDC=GetDC();

CPen newpen(PS_SOLID,1,RGB(255,0,0));

CPen *old=pDC->SelectObject(&newpen);

pDC->Polyline(spt,n);  //画多边形

pDC->SelectObject(old);

ReleaseDC(pDC);

}

void CTranslationView::OnLButtonDblClk(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

//多边形各顶点的坐标

spt[0]=CPoint(100,100);

spt[1]=CPoint(300,100);

spt[2]=CPoint(250,250);

spt[3]=CPoint(100,100);

CView::OnLButtonDblClk(nFlags, point);

DrawPolyline(spt,4);

}

b)建立菜单

一级菜单: 二维图形变换

二级菜单      ---平移

二级菜单      ---放大

c)选择"平移"   弹出一个对话框,输入移动向量的坐标,实现移动三角形

void CTranslationView::Onmove()

{

Cmove move;

move.DoModal();

int m_x;

int m_y;

m_x=move.m_x;

m_y=move.m_y;

// TODO: Add your command handler code here

spt[0].x=spt[0].x+m_x;

spt[0].y=spt[0].y+m_y;

spt[1].x=spt[1].x+m_x;

spt[1].y=spt[1].y+m_y;

spt[2].x=spt[2].x+m_x;

spt[2].y=spt[2].y+m_y;

spt[3].x=spt[3].x+m_x;

spt[3].y=spt[3].y+m_y;

DrawPolyline(spt,4);

}

d)选择"放大"  ,弹出一个对话框,分别输入X,Y方向上的放大倍数, 实现三角形放大

void CTranslationView::Onenlarge()

{

// TODO: Add your command handler code here

Cenlarger enlarger;

enlarger.DoModal();

int m_x;

int m_y;

m_x=enlarger.m_x;

m_y=enlarger.m_y;

spt[1].x=spt[1].x+(spt[1].x-spt[0].x)*m_x;

spt[1].y=spt[1].y+(spt[1].y-spt[0].y)*m_y;

spt[2].x=spt[2].x+(spt[2].x-spt[0].x)*m_x;

spt[2].y=spt[2].y+(spt[2].y-spt[0].y)*m_y;

DrawPolyline(spt,4);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值