计算机图形学求解

void CTestView::GetMaxX()//获得屏幕宽度

{

CRect Rect;

GetClientRect(&Rect);

MaxX=Rect.right;

}

void CTestView::GetMaxY()//获得屏幕高度

{

CRect Rect;

GetClientRect(&Rect);

MaxY=Rect.bottom;

}

void CTestView::ReadPoint()//读入点表函数

{

//设置第一个正方形的4个顶点

int a=160;

P1[0]=CP2(MaxX/4-a,MaxY/2+a);//P0

P1[1]=CP2(MaxX/4+a,MaxY/2+a);//P1

P1[2]=CP2(MaxX/4+a,MaxY/2-a);//P2

P1[3]=CP2(MaxX/4-a,MaxY/2-a);//P3

//设置第二个正方形的4个顶点

int b=ROUND(sqrt(2)*a);

P2[0]=CP2(3*MaxX/4,MaxY/2+b);//P0

P2[1]=CP2(3*MaxX/4+b,MaxY/2);//P1

P2[2]=CP2(3*MaxX/4,MaxY/2-b);//P2

P2[3]=CP2(3*MaxX/4-b,MaxY/2);//P3

}

void CTestView::DrawRect(CDC *pDC,CP2 *P)//绘制正方形函数

{

CP2 T;

CLine line;

for(int i=0;i<4;i++)//边循环

{

if(i==0)

{

line.MoveTo(pDC,P[i]);

T=P[0];

}

else

{

line.LineTo(pDC,P[i]);;

}

}

line.LineTo(pDC,T);//闭合

}

void CTestView::OnMENUIFill()

{

// TODO: Add your command handler code here

COLORREF FColor;

CColorDialog ccd(RGB(255,0,0));

if(ccd.DoModal()==IDOK)//调用调色板选取色

{

FColor=ccd.GetColor();

m_Red=GetRValue(FColor);//获得颜色的红色分量

m_Green=GetGValue(FColor);//获得颜色的绿色分量

m_Blue=GetBValue(FColor);//获得颜色的蓝色分量

}

RedrawWindow();//刷新屏幕

FillRect(P1);//填充正方形1

FillRect(P2);//填充正方形2

}

void CTestView::FillRect(CP2 *P)//填充正方形函数

{

CFill fill;

CPi2 Point[4];

for(int i=0;i<4;i++)

{

Point[i].x=P[i].x;

Point[i].y=ROUND(P[i].y);

Point[i].c=CRGB(double(m_Red)/255.0,double(m_Green)/255.0,double(m_Blue)/255.0);

}

CDC *pDC=GetDC();

fill.SetPoint(Point,4);//填充正方形

fill.CreateBucket();

fill.CreateEdge();

fill.Gouraud(pDC);

ReleaseDC(pDC);

}

这个代码如何运行啊???

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值