C++编程绘图.docx

上传人:b****1 文档编号:1273252 上传时间:2023-04-30 格式:DOCX 页数:17 大小:570.22KB
下载 相关 举报
C++编程绘图.docx_第1页
第1页 / 共17页
C++编程绘图.docx_第2页
第2页 / 共17页
C++编程绘图.docx_第3页
第3页 / 共17页
C++编程绘图.docx_第4页
第4页 / 共17页
C++编程绘图.docx_第5页
第5页 / 共17页
C++编程绘图.docx_第6页
第6页 / 共17页
C++编程绘图.docx_第7页
第7页 / 共17页
C++编程绘图.docx_第8页
第8页 / 共17页
C++编程绘图.docx_第9页
第9页 / 共17页
C++编程绘图.docx_第10页
第10页 / 共17页
C++编程绘图.docx_第11页
第11页 / 共17页
C++编程绘图.docx_第12页
第12页 / 共17页
C++编程绘图.docx_第13页
第13页 / 共17页
C++编程绘图.docx_第14页
第14页 / 共17页
C++编程绘图.docx_第15页
第15页 / 共17页
C++编程绘图.docx_第16页
第16页 / 共17页
C++编程绘图.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++编程绘图.docx

《C++编程绘图.docx》由会员分享,可在线阅读,更多相关《C++编程绘图.docx(17页珍藏版)》请在冰点文库上搜索。

C++编程绘图.docx

C++编程绘图

VC++编程绘图

16—1编写在屏幕上绘制桁架示意图的程序,不注尺寸,大致安放在屏幕中央。

在voidCMy161View:

:

OnDraw(CDC*pDC)中添加如下程序代码:

inti;

POINTpp[13]={-160,0,-160,-40,-80,0,-80,-80,0,0,80,-80,80,0,160,-40,160,0,240,0,0,-120,-240,0,240,0};

CRectrc;

GetClientRect(&rc);

intx0,y0;

x0=(int)rc.right/2;y0=(int)rc.bottom/2;

pDC->SetViewportOrg(x0,y0);

pDC->MoveTo(pp[0]);

for(i=0;i<13;i++)

pDC->LineTo(pp[i]);

pDC->MoveTo(pp[10]);

pDC->LineTo(pp[4]);

图形输出如下:

16-2:

15个不同颜色和半径的圆彼此相切于公共点(300,100),最小圆的半径为10,其余各圆的半径按级差10递增。

分析圆心的变化规律,并绘制该图的程序。

在voidCMy162View:

:

OnDraw(CDC*pDC)中添加如下程序代码:

CPen*pPen,*pOldPen;

CPointp1(290,100),p2(310,120);

inti;

intrgb[15]={RGB(0,0,0),RGB(0,0,255),RGB(0,0,128),RGB(0,255,0),RGB(0,128,0),RGB(0,255,255),RGB(0,128,128),RGB(255,0,0),RGB(128,0,0),RGB(255,0,255),RGB(128,0,128),RGB(255,255,0),RGB(128,128,0),RGB(128,128,128),RGB(192,192,192)};

for(i=0;i<15;i++)

{

pPen=newCPen(PS_SOLID,0,rgb[i]);

pOldPen=(CPen*)pDC->SelectObject(pPen);

pDC->SelectStockObject(NULL_BRUSH);

pDC->Ellipse(CRect(p1,p2));

p1.Offset(-10,0);

p2.Offset(10,20);

pDC->SelectObject(pOldPen);

deletepPen;

}

输出图形如下:

16-3:

编写绘制五角星的程序,10个顶点的坐标按等分大,小圆周通过计算得到,R1=100,R2=38.2

在voidCMy163View:

:

OnDraw(CDC*pDC)中添加如下程序代码:

doublex[11]={0},y[11]={0};

inti,j;

CRectrc;

GetClientRect(&rc);

pDC->SetViewportOrg(rc.right/2,rc.bottom/2);

for(i=1;i<=9;i+=2)

{x[i]=100*cos(1.5708+(i-1)*2*3.141592654/10);

y[i]=-100*sin(1.5708+(i-1)*2*3.141592654/10);}

x[11]=x[1];y[11]=y[1];

for(j=2;j<=10;j+=2)

{x[j]=38.2*cos(1.5708+(j-1)*2*3.141592654/10);

y[j]=-38.2*sin(1.5708+(j-1)*2*3.141592654/10);}

pDC->MoveTo((int)x[1],(int)y[1]);

for(i=1;i<=11;i++)

pDC->LineTo((int)x[i],(int)y[i]);

for(i=1;i<=5;i++)

{j=i+5;

pDC->MoveTo((int)x[i],(int)y[i]);

pDC->LineTo((int)x[j],(int)y[j]);}

并在程序的预处理部分添加函数头#include"math.h"。

程序图形输出如下:

16-4:

编程绘制钢结构构件断面图程序,不注尺寸.

在voidCMy164View:

:

OnDraw(CDC*pDC)中添加如下程序代码:

intx0,y0,i;

CRectrc;

GetClientRect(&rc);

x0=(int)rc.right/2;

y0=(int)rc.bottom/2;

pDC->SetViewportOrg(x0,y0);

POINTpp[6]={-5,0,-5,-100,5,-100,5,0,85,0,-85,0};

pDC->MoveTo(pp[0]);

for(i=0;i<6;i++)

pDC->LineTo(pp[i]);

CRectr1(-85,-10,-65,10);

CRectr2(65,-10,85,10);

CRectr3(-15,-80,5,-60);

CRectr4(-5,-80,15,-60);

POINTp[8]={-75,-10,-15,-70,-5,-80,5,-80,15,-70,75,-10,-15,-10,15,-10};

pDC->MoveTo(p[0]);

pDC->Arc(r1,p[0],pp[5]);

pDC->MoveTo(pp[4]);

pDC->Arc(r2,pp[4],p[5]);

pDC->MoveTo(p[2]);

pDC->Arc(r3,p[2],p[1]);

pDC->MoveTo(p[4]);

pDC->Arc(r4,p[4],p[3]);

pDC->MoveTo(p[0]);

pDC->LineTo(p[6]);

pDC->LineTo(p[1]);

pDC->MoveTo(p[4]);

pDC->LineTo(p[7]);

pDC->LineTo(p[5]);

图形输出如下:

16-5:

编写月亮门的程序

在voidCMy165View:

:

OnDraw(CDC*pDC)中添加如下程序代码:

CRectrc;

GetClientRect(&rc);

intx0,y0;

x0=(int)rc.right/2;

y0=(int)rc.bottom/2;

pDC->SetViewportOrg(x0,y0);

inti;

POINTp[6]={-82.91561976,-125,-280,-125,-280,100,280,100,280,-125,82.91561976,-125};

pDC->MoveTo(p[0]);

for(i=0;i<6;i++)

pDC->LineTo(p[i]);

CRectr1(-150,-150,150,150);

pDC->MoveTo(p[5]);

pDC->Arc(r1,p[5],p[0]);

POINTpp[4]={-60,80,-60,100,60,100,60,80};

pDC->MoveTo(pp[0]);

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

pDC->LineTo(pp[i]);

CRectr2(-100,-100,100,100);

pDC->MoveTo(pp[3]);

pDC->Arc(r2,pp[3],pp[0]);

图形输出如下:

16-6:

由同心的半圆和椭圆弧组成,设R=70,椭圆长半径为140短半径为50

在voidCMy166View:

:

OnDraw(CDC*pDC)中添加如下程序代码:

CRectrc;

GetClientRect(&rc);

pDC->SetViewportOrg(rc.right/2,rc.bottom/2);

inta,b;

a=140;b=50;

pDC->Arc(-70,70,70,-70,70,0,-70,0);

inti;

doubledt,xf,yf,phi,x,y,theta;

dt=.01745;

x=xp(0);y=yp(0);

pDC->MoveTo(x,y);

for(i=1;i<=360;i++){

phi=i*dt;

xf=a*cos(phi);yf=b*sin(phi);

if(yf<0&&sqrt(xf*xf+yf*yf)<70)

pDC->SelectStockObject(NULL_PEN);

else

pDC->SelectStockObject(BLACK_PEN);

x=xp(phi);

y=yp(phi);

pDC->LineTo(x,y);

}

并在程序预处理理部分添加函数头和宏定义:

#include"math.h"

#definexp(phi)a*cos(phi)

#defineyp(phi)b*sin(phi)

图形输出如下:

16-7:

编程绘制球面及其上均匀分布的经线和纬线的正面投影.

在voidCMy167View:

:

OnDraw(CDC*pDC)中添加如下程序代码:

CRectrc;

GetClientRect(&rc);

intx0,y0,i;

x0=(int)rc.right/2;

y0=(int)rc.bottom/2;

pDC->SetViewportOrg(x0,y0);

doublex1,y1;

x1=100*pow(3,.5)/2;y1=100;

intx2,y2;

x2=(int)x1;y2=(int)y1;

pDC->Ellipse(-100,-100,100,100);

pDC->Ellipse(-x2,-y2,x2,y2);

pDC->Ellipse(-50,-100,50,100);

POINTp[12]={0,100,-50,x2,-x2,50,-100,0,-x2,-50,-50,-x2,0,-100,50,x2,x2,50,100,0,x2,-50,50,-x2};

for(i=0;i<6;i++)

{pDC->MoveTo(p[i]);

pDC->LineTo(p[i+6]);}

并在图形的预处理部分添加函数头#include"math.h"

图形输出如下:

16-8:

在voidCMy168View:

:

OnDraw(CDC*pDC)中添加如下程序代码:

intx0,y0,x,y,s1=120;

doubler,theta;

CRectrc;

GetClientRect(&rc);

x0=rc.right/2;y0=rc.bottom/2;

pDC->SetMapMode(MM_LOMETRIC);

pDC->SetViewportOrg((int)x0,(int)y0);

for(theta=0;theta<20*3.14;theta+=0.2)

{r=R(theta);

x=(int)(r*cos(theta));

y=(int)(r*sin(theta));

pDC->MoveTo(0,0);

pDC->LineTo(x,y);

}

并在程序的预处理部分添加函数头和宏定义:

#include"math.h"

#defineR(theta)cos(1.5*theta)*s1

图形输出如下:

16-9:

对百叶窗正面图的程序进行改造.

在voidCMy169View:

:

OnDraw(CDC*pDC)中添加如下程序代码:

inti;

doubledt=0.01745,x,y,x0,y0,a,b,xc,yc,phi,x1,y1,a1,b1;

phi=45*dt;

CRectrc;

GetClientRect(&rc);

x0=rc.right/2;y0=rc.bottom/2;

pDC->SetViewportOrg((int)x0,(int)y0);

xc=0;yc=0;

pDC->Ellipse(-150,-150,150,150);

pDC->Ellipse(-140,-140,140,140);

for(i=0;i<=6;i++)

{x1=pow((140*140-20*20*i*i),0.5);y1=-20*i;

a1=-x1;b1=y1;

x=xp(x1,y1);y=yp(x1,y1);

a=xp(a1,b1);b=yp(a1,b1);

pDC->MoveTo(x,y);

pDC->LineTo(a,b);

}

for(i=0;i<=6;i++)

{x1=pow((140*140-20*20*i*i),0.5);y1=20*i;

a1=-x1;b1=y1;

x=xp(x1,y1);y=yp(x1,y1);

a=xp(a1,b1);b=yp(a1,b1);

pDC->MoveTo(x,y);

pDC->LineTo(a,b);

}

并在程序的预处理部分添加函数头和宏定义:

#include"math.h"

#definexp(x,y)cos(phi)*x+sin(phi)*y+xc

#defineyp(x,y)cos(phi)*y-sin(phi)*x+yc

程序图形输出如下:

16-10:

错切系数为0.4,试编写根据左图画成右图的程序.

在voidCMy1610View:

:

OnDraw(CDC*pDC)中添加如下程序代码:

inti;

doubles1=1.5,x,x0,y0;

CRectrc;

GetClientRect(&rc);

x0=rc.right/2;y0=rc.bottom/2;

pDC->MoveTo(fnx(0),fny(0,0));

pDC->LineTo(fnx(200),fny(200,0));

pDC->MoveTo(fnx(0),fny(0,65));

pDC->LineTo(fnx(200),fny(200,65));

for(i=1;i<=6;i++)

{x=40*(i-1);

pDC->MoveTo(fnx(x),fny(x,65));

pDC->LineTo(fnx(x),fny(x,-25));}

for(i=1;i<=5;i++)

{x=20+40*(i-1);

pDC->MoveTo(fnx(x),fny(x,65));

pDC->LineTo(fnx(x),fny(x,0));}

并在程预处理部分添加函数头和宏定义:

#include"math.h"

#definefnx(x)(int)(x0+(x)*s1)

#definefny(x,y)(int)(y0-(y+0.4*x)*s1)

程序图形输出如下:

16-11:

编写绘制图形程序.

在voidCMy1611View:

:

OnDraw(CDC*pDC)中添加如下程序代码:

intj;

doubledt=0.01745,s1=1.0,x,y,x0,y0,a,b,c,s,xc,yc,phi,theta,i;

CRectrc;

GetClientRect(&rc);

x0=rc.right/2;y0=rc.bottom/2;

a=100;b=40;xc=0;yc=0;

for(i=0;i<=180;i+=22.5)

{theta=i*dt;

c=cos(theta);s=sin(theta);

x=xp(0);y=yp(0);

pDC->MoveTo(fnx(x),fny(y));

for(j=1;j<=360;j++)

{phi=j*dt;

x=xp(phi);y=yp(phi);

pDC->LineTo(fnx(x),fny(y));}}

并在程序的预处理部分添加函数头和宏定义:

#include"math.h"

#definefnx(x)(int)(x0+(x)*s1)

#definefny(y)(int)(y0-(y)*s1)

#definexp(phi)cos(phi)*a*c-sin(phi)*b*s+xc

#defineyp(phi)cos(phi)*a*s+sin(phi)*b*c+yc

程序输出图形如下:

16-12:

编程绘制大门

在预处理部分添加宏定义:

#definefnx(x)(int)(x0+(x)*s*s1)

#definefny(x)(int)(y0-(x)*s1)

添加变量:

inti,x0,y0,s;

doubles1;

添加函数:

draw();

在自定义函数部分添加程序代码如下:

inti;

CClientDCdc(this);

dc.MoveTo(fnx(0),fny(50));

dc.LineTo(fnx(300),fny(50));

dc.Rectangle(fnx(165),fny(50),fnx(215),fny(250));

dc.Rectangle(fnx(155),fny(250),fnx(225),fny(260));

dc.Arc(fnx(190-25),fny(260-25),fnx(190+25),fny(260+25),x0+300,fny(260),x0-300,fny(260));

dc.MoveTo(fnx(215),fny(55));

dc.LineTo(fnx(300),fny(55));

dc.MoveTo(fnx(215),fny(190));

dc.LineTo(fnx(300),fny(190));

dc.MoveTo(fnx(215),fny(195));

dc.LineTo(fnx(300),fny(195));

for(i=1;i<=4;i++)

{

dc.MoveTo(fnx(215+20*i),fny(55));

dc.LineTo(fnx(215+20*i),fny(190));

}

在voidCMy1612View:

:

OnDraw(CDC*pDC)中添加如下程序代码:

CRectrc;

GetClientRect(&rc);

x0=rc.right/2;

y0=rc.bottom/2+100;

intx,y;

x=x0-50;y=y0-180;

CStringw="欢迎参观指导";

TEXTMETRICtm;

pDC->TextOut(x,y,w);

s=1;s1=.5;

draw();

s=-s;

draw();

程序图形输出如下:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2