SimpleCG绘图函数(4)--绘制圆

这篇具有很好参考价值的文章主要介绍了SimpleCG绘图函数(4)--绘制圆。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        在前一篇教程我们利用绘制矩形功能绘制了一个城市,接下来我们讲解另外一个同样重要且基础的图形----圆形。并一起看看该图形能绘制哪些应用呢。

        绘制圆形相关函数如下:

//圆心坐标(nXCenter,nYCenter),半径为nRatio
 
//绘无填充制圆
void circle( int nXCenter, int nYCenter, int nRatio );
 
//绘制填充圆
void fillcircle( int nXCenter, int nYCenter, int nRatio );
 
//绘制无边框填充圆
void solidcircle( int nXCenter, int nYCenter, int nRatio );
 
//清空圆
void clearcircle( int nXCenter, int nYCenter, int nRatio );

只要提供圆心坐标及半径长度即可,与矩形一样,提供了四个函数分别绘制

1、仅有边框无填充--circle

2、边框加填充--fillcircle

3、无边框,仅有实心填充--solidcircle

4、用背景色清除圆区域--clearcircle

函数相对简单,不过因为圆形在真实世界太普遍以及实用了,所以在图形绘制中,圆形显得尤为重要。

下面我们以绘制太极图来演示圆的绘制,之所以使用太极图是因为虽然他看似简单,实际蕴含丰富。充分反映了祖先的智慧,同时也是完全使用圆形构造完成的。小小的太极图里包含了五个圆形。

绘制代码如下:

// Circle.cpp : 定义控制台应用程序的入口点。
//

#include "../import/include/CGBoard.h"
#include "math.h"

#ifdef _DEBUG
#pragma comment(lib,"../import/lib/SimpleCG_MDd.lib")
#else
#pragma comment(lib,"../import/lib/SimpleCG_MD.lib")
#endif

int g_nWidth = 400;		//画面宽度
int g_nHeight= 400;		//画面高度

//绘制太极图
void DrawProcess()
{
	//外圆
	setfillcolor(0);
	circle(200,200,100);
	line(200,100,200,300);
	floodfill(250,200,0,0);

	//黑色半圆
	solidcircle(200,150,50);

	//设置填充色为白色
	setfillcolor(RGB(255,255,255));
	//白色半圆
	solidcircle(200,150,25);

	//小白圆
	solidcircle(200,250,50);

	//小黑圆
	setfillcolor(0);
	solidcircle(200,250,25);

}
int _tmain(int argc, _TCHAR* argv[])
{
	srand(GetTickCount());
	//初始化
	if( !ShowingBoard(g_nWidth,g_nHeight, DrawProcess))
		return 1;
	//关闭图库
	CloseBoard();
	return 0;
}

运行图如下:

SimpleCG绘图函数(4)--绘制圆

 下面我们让太极图转动起来,反映的是阴阳转化的关系。由于我们还没学到旋转的函数,只能通过手动运算旋转点的方式编写,代码如下:

// Circle.cpp : 定义控制台应用程序的入口点。
//

#include "../import/include/CGBoard.h"
#include "math.h"

#ifdef _DEBUG
#pragma comment(lib,"../import/lib/SimpleCG_MDd.lib")
#else
#pragma comment(lib,"../import/lib/SimpleCG_MD.lib")
#endif

int g_nWidth = 400;		//画面宽度
int g_nHeight= 400;		//画面高度
//旋转的太极图
void Taiji( int nX, int nY, int nRatio, float fAngle )
{
	int nPtX=0;
	int nPtY=0;
	nPtX = cos(fAngle)*nRatio;
	nPtY = sin(fAngle)*nRatio;
	//外圆
	circle(nX,nY,nRatio);
	line(nX+nPtX,nY-nPtY,nX-nPtX,nY+nPtY);
	floodfill(nX+5*sin(fAngle),nY+5*cos(fAngle),0,0);

	//黑色半圆
	solidcircle(nX+nPtX/2,nY-nPtY/2,nRatio/2);

	//设置填充色为白色
	setfillcolor(RGB(255,255,255));
	//小白圆
	solidcircle(nX+nPtX/2,nY-nPtY/2,nRatio/4);

	//白色半圆
	solidcircle(nX-nPtX/2,nY+nPtY/2,nRatio/2);

	//小黑圆
	setfillcolor(0);
	solidcircle(nX-nPtX/2,nY+nPtY/2,nRatio/4);
}


//绘制太极图
void DrawProcess()
{
	bool bIsRunning = true;
	float fAngle=0;
	while(bIsRunning)
	{
		Taiji(200,200,100,fAngle);
		fAngle+=0.05;
		Sleep(50);
	}
}
int _tmain(int argc, _TCHAR* argv[])
{
	//初始化
	if( !ShowingBoard(g_nWidth,g_nHeight, DrawProcess))
		return 1;
	//关闭图库
	CloseBoard();
	return 0;
}

为了绘制运动太极,将太极绘制放入单独函数供调用,而且设置了旋转角度参数,方便绘制转动的太极。运行图与上图差别不大,就不贴效果图了,大家可以自行运行看看。

第二个例子我们展示一下奥运五环的绘制。绘制环可以先画一个圆,然后在里面用clearcircle用小一点的半径清除掉里面就能得到一个环形,不过我们可以用更简单的直接设置笔宽来实现。

setlinewidth(15);

关于设置笔宽及填充,例如颜色,大小之类的设置函数后面会讲到,在这里先用上。

代码如下:

// Circle.cpp : 定义控制台应用程序的入口点。
//

#include "../import/include/CGBoard.h"
#include "math.h"

#ifdef _DEBUG
#pragma comment(lib,"../import/lib/SimpleCG_MDd.lib")
#else
#pragma comment(lib,"../import/lib/SimpleCG_MD.lib")
#endif

int g_nWidth = 400;		//画面宽度
int g_nHeight= 400;		//画面高度


//绘制太极图
void DrawProcess()
{
	setlinewidth(15);
	setlinecolor(RGB(50,140,210));
	circle(60,100,50);
	setlinecolor(RGB(240,160,50));
	circle(120,150,50);
	setlinecolor(RGB(0,20,40));
	circle(180,100,50);
	setlinecolor(RGB(80,170,70));
	circle(240,150,50);
	setlinecolor(RGB(200,80,70));
	circle(300,100,50);
}
int _tmain(int argc, _TCHAR* argv[])
{
	//初始化
	if( !ShowingBoard(g_nWidth,g_nHeight, DrawProcess))
		return 1;
	//关闭图库
	CloseBoard();
	return 0;
}

运行效果图:

审核说版权不明,不知道是不是这个,就不放图片试试了

 细心的读者可能会发现乍一看似乎还可以,仔细看的话就会发现这个五环是有问题的,因为环与环之间并不是扣在一起,我们后面介绍到弧的绘制时再来完善它,画圆函数是没办法实现的。

最后我们再用圆绘制一个小甲虫,并祝大家节日快乐,明天就是儿童节了。

// Circle.cpp : 定义控制台应用程序的入口点。
//

#include "../import/include/CGBoard.h"
#include "math.h"

#ifdef _DEBUG
#pragma comment(lib,"../import/lib/SimpleCG_MDd.lib")
#else
#pragma comment(lib,"../import/lib/SimpleCG_MD.lib")
#endif

int g_nWidth = 400;		//画面宽度
int g_nHeight= 400;		//画面高度


void DrawProcess()
{
	setlinewidth(3);
	//头
	setfillcolor(RGB(250,240,200));
	fillcircle(280,110,30);
	
	//身
	setfillcolor(RGB(250,40,10));
	fillcircle(200,200,100);
	fillcircle(285,115,8);

	curveline(270,130,200,140,4);
	curveline(200,140,210,100,-4);
	curveline(200,140,120,260,14);

	//斑点
	setfillcolor(0);
	solidcircle(170,130,25);
	solidcircle(220,170,30);
	solidcircle(280,180,10);
	solidcircle(260,230,25);
	solidcircle(140,200,30);
	solidcircle(180,250,25);
	solidcircle(180,180,10);
	solidcircle(220,260,10);

	//触角
	solidcircle(250, 70, 6);
	solidcircle(280, 60, 6);
	line(250, 70, 260, 85 );
	line(280, 60, 275, 80 );

	setfillcolor(RGB(250,240,200));
	solidcircle(282,108,9);
	//眼睛
	setfillcolor(0);
	solidcircle(270,110,6);
	solidcircle(290,100,6);
}
int _tmain(int argc, _TCHAR* argv[])
{
	//初始化
	if( !ShowingBoard(g_nWidth,g_nHeight, DrawProcess))
		return 1;
	//关闭图库
	CloseBoard();
	return 0;
}

SimpleCG绘图函数(4)--绘制圆

以上通过几个例子演示了圆形的绘制及运用,大家可以参考并熟练圆形函数的应用,发挥想象,多多练习,下一篇将探讨椭圆的绘制方法及使用。 文章来源地址https://www.toymoban.com/news/detail-466251.html

到了这里,关于SimpleCG绘图函数(4)--绘制圆的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Matlab绘图系列教程-基础绘图:柱状图 (bar函数 )

    4.1 介绍 4.1.1 引言 柱状图是一种常用的数据可视化方式,用于比较不同类别的数据或展示数据的分布。在Matlab中,使用 bar 函数可以轻松地绘制出精美的柱状图。本篇博客将为您介绍如何使用Matlab绘制优雅的柱状图,展示数据的视觉效果和科研价值。 4.1.2 目标和受众 本篇博客

    2024年02月12日
    浏览(35)
  • R语言绘图丨论文中最常用箱线图绘制教程,自动进行显著性检验和误差线标注

    在科研论文绘图中,对于多组数据进行比较一般采用箱线图的方法,今天分享一下这个经典数据可视化方法,从零开始绘制一张带 误差棒 并自动计算 显著性 比较结果的 箱线图 。 数据分布信息: 箱线图能够直观地展示数据的分布情况,包括数据的中位数、上下四分位数和

    2024年02月12日
    浏览(41)
  • Matlab绘图系列教程-Matlab 34 种绘图函数示例(下)

    1.1 简介 关于本教程的目的与范围 欢迎来到Matlab绘图指南!本教程的目标是帮助您从一个绘图小白蜕变为Matlab绘图大神。无论您是科学研究人员、学生还是对数据可视化感兴趣的爱好者,本教程将为您揭示绘制高质量科学图表的技巧和策略,让您的图表在论文和报告中脱颖而

    2024年02月13日
    浏览(28)
  • 【计算机图形学基础教程】MFC基本绘图函数2

    CGdiObject类:GDI绘图工具的基类 CBitmap类:封装了GDI画刷,可以选作设备上下文的当前画刷,用于填充图形的内部 CFont类:封装了GDI字体,可以选作设备上下文的当前字体 CPalette类:封装了GDI调色板,提供应用程序和显示器之间的颜色接口 CPen类:封装了GDI画笔,可以选作设备

    2024年02月03日
    浏览(45)
  • 【Win32绘图编程,GDI绘图对象】绘图基础,位图处理,绘图消息处理,画笔,画刷,文本绘制

    这一篇文章分享本人学习win32绘图编程,其中包括GDI绘图对象,绘图基础,基本图形的绘制,画笔画刷的使用,文本绘制,以及文本字体的更改。 绘图设备DC(Device Context),有时也叫做绘图上下文/绘图描述表/显示设备上下文 HDC-DC句柄,表示绘图设备 GDI-Windows graphics device

    2024年02月07日
    浏览(31)
  • 实验绘图绘制有效图形

    科研作图 草稿,辅助实验:说明目的即可,甚至直接在纸上作出草图。简单的分 析利用Excel、VectorNTI和画图板即可。 简便易学,但较为粗糙,难登大雅之堂。 演示,用在PowerPoint或海报中。要求制作精细,色彩鲜明。3.发表文章 发表文章,需要输出为EPS和TIF格式的图片。由于

    2024年01月22日
    浏览(33)
  • matlab绘图(三)绘制三维图像

    一、绘制三维曲线  二、绘制三维曲面 1.meshgrid函数  2.mesh和surf函数 1.最基本的绘制三维曲线的函数 —plot3 plot3(x1,y1,z1, 选项 1,x2,y2,z2, 选项 2,…, xn,yn,zn , 选项 n) 其中,每一组 x , y , z 组成一组曲线的坐标参数,选项的定义和 plot 函数相同。当 x 、 y 、 z 是同维向量时,则

    2024年02月01日
    浏览(86)
  • Python绘图-14绘制3D图(下)

    14.7.1图像呈现 14.7.2绘图代码 这段代码的主要功能是生成一组随机的x和y坐标,然后计算对应的Z值(基于正弦和余弦函数),并使用matplotlib绘制出三维等高线图。代码中设置了等高线的数量、颜色映射、坐标轴标签、视角等,使得图形更加易于理解和分析。  14.8.1图像呈现

    2024年03月17日
    浏览(34)
  • R语言绘图:绘制横向柱状图

    代码主要实现: 对数据进行排序,并且相同分组的数据会有相同的颜色。最后,绘制横向柱状图。 结果展示:

    2024年04月16日
    浏览(25)
  • Python绘图:箱线图的理解与绘制

    目录 一、箱线图简介 二、箱线图的绘制 2.1 基于matplotlib库的箱线图绘制 (1)函数主要参数及功能 (2)函数返回值 (3)示例 2.2 基于seaborn库的箱线图绘制 (1)函数主要参数功能及其返回值 (2)示例 附录 Python绘图待扩展阅读 如下图所示,箱线图(箱形图、盒须图)是一

    2024年02月11日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包