那天在问答区看到有人问如何编写一个纯C的图形库,因为在windows编程中采用消息驱动,与c语言初学者熟悉的面向过程编程有比较大的差异,而且控制台程序与窗口程序是属于不同的编程方式,所以导致提问者创建窗口后不知道如何进行下去。于是花了一点时间尝试了下,写了这个alpha版本,发现这种库对于c语言初学者还是有一些用处,所以想着继续完善下去,于是打算写一个简单的基于windows的图形库,激发初学者的学习兴趣,尤其是大学新生,当然会尽量写得简单明了,希望初中生也能快速掌握。以让从纯c控制台开发转入windows平台开发有一个过渡阶段。图形库名称取名SimpleCG,就是简单电脑绘图的意思。看看有没有同学有兴趣下载测试一下。
当前版本比较粗糙简陋,后续如果比较多同学喜欢,将继续完善安装及使用教程。当前只是用它画了一个佩奇作为demo,有兴趣的同学可以到以下地址下载测试
b2b160 / SimpleCG_Demo · GitCode
代码在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;
}
后续将继续编写库的使用方法及函数说明,有基础的同学也可以下载下来查看头文件先学习使用