GDI绘制叶形线和蝴蝶结
来源:互联网 发布:杭州企业网站排名优化 编辑:程序博客网 时间:2024/04/27 22:47
具有一定规律的曲线可以用数学表达式来模拟,那么在计算机世界中这些图形是怎么生成的,下面来看一下一些简单图形的生成方法,蝴蝶线和星形线。
蝴蝶线、代码如下:
void OnDrawRose(CDC* pDc){int d,k,x1,x2,y1,y2;float pi,a,e;CPen pen;pen.CreatePen(PS_SOLID,1,RGB(0xff,0,0));CPen *pOldPen = pDc->SelectObject(&pen);pi = 3.1415926;d = 80;for (a = 0; a<=2 * pi; a+= pi/360){e = d * (1+0.25*sin(4*a));e = e * (1 + sin(8*a));x1 = int(320+e*cos(a));x2 = int(320+e*cos(a + pi/8));y1 = int(200+e*sin(a));y2 = int(200+e*sin(a + pi/8));pDc->MoveTo(x1,y1);pDc->LineTo(x2,y2);}}
星形线的绘制代码如下:
void OnDrawLeaf(CDC* pDc){CPen pen;pen.CreatePen(PS_SOLID,1,RGB(0,0,0xff));CPen *pOldPen = pDc->SelectObject(&pen);int a,n,cx,cy,gx,gy,flag,k;double r,p,th,x,y,pi;a = 160;n = 2;pi = 3.1415926;cx = 700;cy = 500;flag = 0; k = 200;for (p = 1; p >= 0.2; p-=0.2){for (th = 0; th <= 2*pi+0.1; th += pi/k){r = fabs(a*cos(n*th)*p);x = r*cos(th);y = r*sin(th);gx = int(cx+x);gy = int(cy+y);if (flag == 0){pDc->MoveTo(gx,gy);}flag = 1;pDc->LineTo(gx,gy);}flag = 0;}pDc->SelectObject(pOldPen);}
生产成的图形如下:
呵呵,效果还可以吧
- GDI绘制叶形线和蝴蝶结
- 绘制透明图片GDI和GDI+结合
- C#中GDI绘图和GDI绘制随即验证码
- GDI绘制透明字体和图片
- GDI绘制各种图形和文字
- GDI文字绘制和windows下opengl文字绘制小结
- 使用GDI+绘制高质量图和字体
- 使用GDI+绘制高质量图和字体
- 使用GDI+绘制高质量图和字体
- C#使用GDI+绘制高质量图和字体
- [收藏]使用GDI+绘制高质量图和字体
- 第四章 输出文字(绘制和更新,GDI 简介)
- C#--GDI+绘制多行文本和格式化文本
- GDI基础函数使用绘制线条和图形
- 蝴蝶结程序
- MFC-GDI绘制
- GDI绘制饼状图
- MFC GDI 曲线图绘制
- Square Coins(母函数)
- 深入理解java的finalize
- magento 新手安装指南
- 构造函数和析构函数调用顺序实例
- IBM宣布停止支持Rational Logiscope
- GDI绘制叶形线和蝴蝶结
- Storyboard初体验
- 安卓系统的Handler,MessageQueue,Message,Looper的学习
- Android监听应用程序安装和卸载实现程序
- vc编译器不允许将构造函数设为私有,应该为公有
- c++实现c#委托机制
- 字符串类string使用的相关问题
- windows8开发-metro应用之Popup窗口
- No result defined for action and result input