为什么写图形库SimpleCG

        那天在问答区看到有人问如何编写一个纯C的图形库,因为在windows编程中采用消息驱动,与c语言初学者熟悉的面向过程编程有比较大的差异,而且控制台程序与窗口程序是属于不同的编程方式,所以导致提问者创建窗口后不知道如何进行下去。于是花了一点时间尝试了下,写了这个alpha版本,发现这种库对于c语言初学者还是有一些用处,所以想着继续完善下去,于是打算写一个简单的基于windows的图形库,激发初学者的学习兴趣,尤其是大学新生,当然会尽量写得简单明了,希望初中生也能快速掌握。以让从纯c控制台开发转入windows平台开发有一个过渡阶段。图形库名称取名SimpleCG,就是简单电脑绘图的意思。看看有没有同学有兴趣下载测试一下。

        当前版本比较粗糙简陋,后续如果比较多同学喜欢,将继续完善安装及使用教程。当前只是用它画了一个佩奇作为demo,有兴趣的同学可以到以下地址下载测试

b2b160 / SimpleCG_Demo · GitCode

佩奇Demo压缩包下载

代码在visual studio 2010编写,其他版本的不知道能否运行,大家测试后,希望能给我反馈,万分感谢

运行效果

代码

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

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

void DrawProocess()
{
	int nDelay = 500;
	//衣服
	setfillcolor(RGB(230,85,90));
	setline(PS_SOLID, 6, RGB(229,47,62));
	fillpie( 170, 325, 450, 750, 0, C_PI);
	Sleep(nDelay);
	//脸
	setlinecolor(RGB(233,144,192));
	setfillcolor(RGB(251,174,220));
	setlinewidth(4);
	POINT pt[]= { {460,100}, {275,155}, {200,250},{235,355},{390,360},{435,230},{480,200},{460,100}};
	int nLenHead[] = { 10,20,15,30,36,6,0 };
	polycurvelinevar( pt, nLenHead, sizeof(pt)/sizeof(POINT) );
	floodfill(260,220,RGB(233,144,192),0);
	fillellipse(430,100, 510, 200);
	Sleep(nDelay);

	//鼻子
	setfillcolor(RGB(208,110,167));
	solidcircle(460, 160, 10);
	solidcircle(490, 143, 10);
	Sleep(nDelay);

	//眼睛
	setfillcolor(RGB(255,255,255));
	fillcircle(380, 153, 20);
	setfillcolor(RGB(255,255,255));
	fillcircle(330, 173, 20);
	setfillcolor(0);
	solidcircle(385, 150, 10);
	solidcircle(335, 170, 10);
	Sleep(nDelay);

	//脸蛋
	setfillcolor(RGB(252,139,205));
	solidcircle(260, 265, 35);
	Sleep(nDelay);
	
	//耳朵
	setfillcolor(RGB(251,174,220));
	arc( 270, 90, 310, 155, 2.3*C_PI, C_PI*1.1/2);
	floodfill(285,118,RGB(233,144,192),0);
	arc( 220, 110, 260, 185, 2.3*C_PI, C_PI/2.1);
	floodfill(240,156,RGB(233,144,192),0);
	Sleep(nDelay);

	//嘴巴
	setline(PS_SOLID, 6, RGB(191,60,128));
	arc( 300, 260, 400, 310, C_PI*8/9, -C_PI*0.05);
	Sleep(nDelay);

	//手
	setline(PS_SOLID, 10, RGB(233,144,192));
	curveline(220,385,125,425,8);
	line(150,415,135,405 );
	line(150,415,145,435 );
	Sleep(nDelay);

	curveline(410,385,505,425,-8);
	line(495,415,505,410 );
	line(495,415,490,430 );
	Sleep(nDelay);

	//脚
	line(250,535,250,590 );
	line(370,535,370,590 );
	setfillcolor(0);
	solidpie(250,581,290,599,C_PI/2,-C_PI/2);
	POINT pt2[]={{245,585},{270,581},{270,598},{245,595}};
	solidpolygon(pt2,4);
	int i=0;
	for(i=0;i<4;++i)
		pt2[i].x += 120;
	solidpolygon(pt2,4);
	solidpie(370,581,410,599,C_PI/2,-C_PI/2);
	Sleep(nDelay);

	//尾巴
	curveline(170,490,135,480,-4);
	curveline(135,480,140,450,-10);
	curveline(140,450,160,450,-6);
	curveline(160,450,150,480,-10);
	curveline(150,480,110,475,-10);

}
int _tmain(int argc, _TCHAR* argv[])
{
	SetDrawProcess( DrawProocess );
	if( !InitCGWindow(600, 700))
		return 1;
	CloseCG();
	return 0;
}

后续将继续编写库的使用方法及函数说明,有基础的同学也可以下载下来查看头文件先学习使用 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

b2b160

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值