ACLLib图形库的基本使用

ACLLib图形库的基本使用

  1. 使用环境:Dev-C++ 5.7.1
  2. ACLLib图形库的下载:github上ACLLib的下载链接
  3. 打开Dev-C++,新建项目,自定义你的文件名称
  4. 点击Dev-C++:项目-添加,在所创main文件所在位置下添加acllib.c与acllib.h到项目中
  5. 点击Dev-C++:项目-项目属性–参数-Linker,点击加入库。找到安装的Dev-C++的位置,在Dev- C++下MinGW文件夹的lib中找到下列8个文件将它们添加到库中
    libwinmm.a,libmsimg32.a,libkernel32.a,libuser32.a,
    libgdi32.a,libole32.a,liboleaut32.a,libuuid.a
  6. 使用acllib.h,使用其中声明的函数使用绘图等简单操作。
    (ps:下载的ACLLib文件中有acllib_doc.pdf,其中有acllib图形库函数的使用说明,可自行参考使用)

源代码:

#include "acllib.h"
#include 

/**ACLLib是一个纯教学用途的纯C语言图形库**/ 

//Setup是ACLLib程序的入口/启动函数 
//意义等同于main函数 
int Setup()
{
	//调出我们的控制台窗口
	initConsole(); 
	printf("请输入自定义窗口的长度与宽度(均需要大于100):");
	int length,width;
	scanf("%d%d",&length,&width); 
	
	//我们自己自定义大小与位置的初始化窗口 
	//在(450,200)像素的位置画一个长:length与宽:width大小的窗口 
	//450到200即为显示屏从左上角为坐标轴原点所对应的坐标 
	initWindow("绘图",450,200,length,width); 
	
	//在开始绘制与结束绘制之间使用绘图工具 
	beginPaint();  
	//在自定义窗口(20,20)的位置画一个到(length-100,width-100)位置的直线
	line(20,20,length-100,width-100);
	putPixel(100,150,RGB(255,0,0));//RGB(a,b,c)可以自定义颜色
	putPixel(100,200,GREEN);  //或者使用默认的颜色
	setPenColor(BLUE);  //设置线笔的颜色
	setPenStyle(PEN_STYLE_DASHDOTDOT); //设置线条的样式(DASH: 划线,DOT: 点线,SOLID:实线) 
	setPenWidth(1); //设置线笔的宽度为1个线点的宽度 
	line(20,30,50,120);    
	endPaint();
	//绘制工具还有很多,可以参考acllib_doc.pdf自行使用 
	return 0;
}

运行结果:
ACLLib图形库的基本使用_第1张图片
(ps:两个线点比较小…)

acllib图形库做的标准时钟

  • acclib自带的标准时钟示例代码
#include "acllib.h"

#include 
#include 

#define RAD(x) ((x)/360.0*2*3.1415926535)

int h = 0;
int m = 0;
int s = 0;

void paint()
{
	static const int ox = 150;
	static const int oy = 150;

	static const int hl = 46;
	static const int ml = 74;
	static const int sl = 120;

	int i;

	beginPaint();

	clearDevice();

	// circle
	setPenWidth(2);
	setPenColor(BLACK);
	setBrushColor(WHITE);
	ellipse(25,25,275,275);

	// label
	setPenWidth(1);
	setPenColor(BLACK);
	for(i=0;i<12;++i)
	{
		moveTo(ox+115*sin(RAD(180-i*30)),oy+115*cos(RAD(180-i*30)));
		lineTo(ox+125*sin(RAD(180-i*30)),oy+125*cos(RAD(180-i*30)));
	}

	// hour
	setPenWidth(8);
	setPenColor(BLACK);
	moveTo(ox,oy);
	lineTo(ox+hl*sin(RAD(180-h*30)),oy+hl*cos(RAD(180-h*30)));

	// minute
	setPenWidth(4);
	setPenColor(GREEN);
	moveTo(ox,oy);
	lineTo(ox+ml*sin(RAD(180-m*6)),oy+ml*cos(RAD(180-m*6)));

	// second
	setPenWidth(2);
	setPenColor(RED);
	moveTo(ox,oy);
	lineTo(ox+sl*sin(RAD(180-s*6)),oy+sl*cos(RAD(180-s*6)));

	endPaint();
}

void timerEvent(int tid)
{
	++s;
	if(s==60)
	{
		s = 0;
		++m;
	}
	if(m==60)
	{
		m = 0;
		++h;
	}
	if(h==12)
		h = 0;
	paint();
}

int Setup()
{
    initWindow("Clock",DEFAULT,DEFAULT,300,300);

	registerTimerEvent(timerEvent);
	
	startTimer(0,1000);
	//startTimer(0,100);
	//startTimer(0,10);
	//startTimer(0,1);


	return 0;
}

ACLLib图形库的基本使用_第2张图片

你可能感兴趣的:(C/C++)