1 在C Viewcpp中加入:#include"mathh"
2 在CView类中添加:
int g; //表示角度
CPoint v[10], prev_v[10]; //五角星的十个点
CDC pDC; //设备上下文指针
CBrush br,p_br; //画刷对象和画刷指针
CPen pen,p_pen; //画笔对象和画比指针
3 在构造函数CMyView()添加:
g=0; 角度从0开始
float rad;
int i,t; 将五角星的十个点存入V数组中
for(i=0;i<10;i++)
{rad=float((i36+18)314/180);
t=i&150:25;
v[i]x=int(tcos(rad));
v[i]y=int(tsin(rad));
} //红,绿,蓝
brCreateSolidBrush(RGB(255,255,0));//创建一个实心画刷
penCreatePen(PS_SOLID,2,RGB(0,120,255));设置画笔
// 初始化画刷和画笔:PS_SOLID:实线样式,2:线宽
4 在析构造函数~CMyView()中添加:
brDeleteObject();
penDeleteObject();释放画笔和画刷
5 在OnDraw()函数中加入:
KillTimer(1);//禁止定时器消息
CRect rc; //窗口对象
GetClientRect(&rc); //得到窗口的大小
int x,y,j,x1,y1;
float rad1; // 坐标转换
x=rcright/2;
y=rcbottom/2; //得到窗口的中心坐标
for(j=0;j<359;j+=2)
{rad1=float(j314/180);
x1=int(100cos(rad1))+x; //画圆
y1=int(100sin(rad1))+y;
pDC->SetPixel(x1,y1,RGB(0,0,0)); //画园上的点
2010-6-4 20:00 回复
圈中打转
0位粉丝
2楼
}
pDC->SetROP2(R2_NOTXORPEN); //设置绘图模式
p_br=pDC->SelectObject(&br); //选择画笔等GDI绘图对象
memcpy(prev_v,v,10sizeof(CPoint));//将五角星的十个点送prev_v数组
pDC->Polygon(prev_v,10); //画五角星
pDC->SelectObject(p_br); //设置绘图对象
SetTimer(1,50,NULL); //启动定时器
6 在定时器响应函数OnTimer(UINT nIDEvent) 中添加:
7 g+=5; //角度加5
CRect rc;
GetClientRect(&rc);
int x,y,j;
float rad1; //坐标转换
rad1=float(g314/180);
x=(rcright/2);
y=rcbottom/2;
CPoint a[10]; //定义一个临时的数组存放角度变化后的五角星的十个点
for(j=0;j<10;j++)
{a[j]x=v[j]x+x+int(100cos(rad1));
a[j]y=v[j]y+y+int(100sin(rad1));
}
CClientDC pDC=new CClientDC(this);
pDC->SetROP2(R2_NOTXORPEN);
p_br=pDC->SelectObject(&br);
pDC->Polygon(prev_v,10);
memcpy(prev_v,a,10sizeof(CPoint));
pDC->Polygon(prev_v,10);
pDC->SelectObject(p_br);
delete pDC;
if (g>359) KillTimer(1); //角度
CView::OnTimer(nIDEvent);
%五角星外五角圆半径定为1
rr=04; %五角星内五角圆半径
h=03; %五角星厚度
r=repmat([1;rr],[5 1]);
r=[r;1];
d=(0:36:360)'+18;
x=rcosd(d);
y=rsind(d);
z=ones(size(x));
o=zeros(size(x));
X=[o x];
Y=[o y];
Z1=[hz o];
Z2=[-hz o];
C=ones(size(X));
figure(1),clf;
colormap([1 1 0]);
p=surface(X,Y,Z1,C);hold on;
set(p,'edgecolor','none','facealpha',1,'FaceLighting','phong','FaceColor','interp',
'BackFaceLighting','reverselit');
p=surface(X,Y,Z2,C);hold off;
set(p,'edgecolor','none','facealpha',1,'FaceLighting','phong','FaceColor','interp',
'BackFaceLighting','reverselit');
set(findobj(gca,'type','surface'),
'FaceLighting','phong',
'AmbientStrength',3,'DiffuseStrength',8,
'SpecularStrength',9,'SpecularExponent',2);
axis ([-1 1 -1 1 -1 1]);
hidden off;
view(45,60);
hl=light('Position',[cosd(-90) sind(-90) 1],'Style','infinite');
图纸都没有,怎么编呀?如果你要方法的话,我建议你先编五角星的第一个角的程序,然后以五角星的中心为坐标原点,然后用G68旋转指令编程,编一个角要旋转72度,程序是G68 X0 Y0 R72以此类推即可!
我自己弄出来了,不好意思,我自己来回答了。
程序如下:
#include<stdioh>
void
main()
{
int
i1,j1,k1,i2,j2,k2,i3,j3,k3,i4,j4,k4,m4,n4;
printf("Let's
draw
a
five
pointed
star
below:\n");
for(i1=1;i1<6;i1++)
/这是五角星的上面一个角/
{
for(j1=1;j1<19-i1;j1++)
/这是空格/
printf("
");
for(k1=1;k1<=2i1-1;k1++)
/这是“”/
printf("");
printf("\n");
}
for(i2=1;i2<5;i2++)
/这是五角星的中间两个角/
{
for(j2=1;j2<3i2-3;j2++)
printf("
");
for(k2=1;k2<=42-6i2;k2++)
printf("");
printf("\n");
}
for(i3=1;i3<3;i3++)
/这是中间与下部相接的部分/
{
for(j3=1;j3<12-i3;j3++)
printf("
");
for(k3=1;k3<=12+2i3;k3++)
printf("");
printf("\n");
}
for(i4=1;i4<5;i4++)
/这是五角星的下面两个角/
{
for(j4=1;j4<10-i4;j4++)
printf("
");
for(k4=1;k4<=10-2i4;k4++)
printf("");
for(m4=1;m4<6i4-3;m4++)
printf("
");
for(n4=1;n4<=10-2i4;n4++)
printf("");
printf("\n");
}
printf("Congratulations!\nWe've
successfully
drawn
a
beautiful
pentagon,haven't
we\n(^_^)\n");
以上就是关于如何用c语言做一个用*组成的实心五角星全部的内容,包括:如何用c语言做一个用*组成的实心五角星、求matlab程序画一个3d五角星、铣削五角星程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)