[Easyx]一个以图像模式输出数字的函数

使用例子:
[Easyx]一个以图像模式输出数字的函数_第1张图片
代码如下:
注释版:

void PutNumber(
	long x, //输出位置
	long y, 
	long number,//数字
	int TextSize=10,              //文字的尺寸
	int TextProportion=2,			//文字的高宽比
	int TextInterval=0,             //文字之间的间隔
	COLORREF tc = 0x000000,         //文字颜色(默认为黑)
	LPCTSTR font = "宋体"           //字体设置
) {
	int max;
	long int one_data;//当前位数字
	settextcolor(tc);		// 设置文字颜色
	setbkmode(TRANSPARENT);		// 设置文字背景为透明色
	settextstyle(TextSize * TextProportion, TextSize, font);  //设置字体与字的大小
	if (!TextInterval)//如果间隔为0,则自动调整间隔
		TextInterval = TextSize;
	for (max = 0; max < 10; max++) //获得数字位数max
		if (number / pow(10, max) < 10)
			break;
	while (number >= 0) {//按位输出数字
		if (max < 0||x>getwidth())//如果位数小于0或者x超过程序边界
			return; 
		one_data = number / (long)pow(10, max);
		outtextxy(x, y, (char)(one_data + 48));
		number -= one_data * (long)pow(10, max);
		--max; 
		x += TextInterval;
	}
}

无注释版:

void PutNumber(
	long x, 
	long y, 
	long number,
	int TextSize=10,              
	int TextProportion=2,			
	int TextInterval=0,  
	COLORREF tc = 0x000000,       
	LPCTSTR font = "宋体"   
) {
	int max;
	long int one_data;
	settextcolor(tc);		
	setbkmode(TRANSPARENT);		
	settextstyle(TextSize * TextProportion, TextSize, font); 
	if (!TextInterval)
		TextInterval = TextSize;
	for (max = 0; max < 10; max++)
		if (number / pow(10, max) < 10)
			break;
	while (number >= 0) {
		if (max < 0||x>getwidth())
			return; 
		one_data = number / (long)pow(10, max);
		outtextxy(x, y, (char)(one_data + 48));
		number -= one_data * (long)pow(10, max);
		--max; 
		x += TextInterval;
	}
}

完整实例:

#include //因为用到了pow函数,当然,也可以手动写该函数功能的代码来免去该头文件
#include 
#include 
void CT_PutNumber(
	long x, //输出位置
	long y,
	long number,//数字
	int TextSize = 10,              //文字的尺寸
	int TextProportion = 2,			//文字的高宽比
	int TextInterval = 0,             //文字之间的间隔
	COLORREF tc = 0x000000,         //文字颜色(默认为黑)
	LPCTSTR font = "宋体"           //字体设置
) {
	int max;
	long int one_data;//当前位数字
	settextcolor(tc);		// 设置文字颜色
	setbkmode(TRANSPARENT);		// 设置文字背景为透明色
	settextstyle(TextSize * TextProportion, TextSize, font);  //设置字体与字的大小
	if (!TextInterval)//如果间隔为0,则自动调整间隔
		TextInterval = TextSize;
	for (max = 0; max < 10; max++) //获得数字位数max
		if (number / pow(10, max) < 10)
			break;
	while (number >= 0) {//按位输出数字
		if (max < 0 || x>getwidth())//如果位数小于0或者x超过程序边界
			return;
		one_data = number / (long)pow(10, max);
		outtextxy(x, y, (char)(one_data + 48));
		number -= one_data * (long)pow(10, max);
		--max;
		x += TextInterval;
	}
}
int main() {
	initgraph(500, 500);
	setbkcolor(WHITE);
	cleardevice();//清下屏
	CT_PutNumber(0, 0, 123);//默认输出
	CT_PutNumber(0, 30, 12345,20);//字体大小更改
	CT_PutNumber(0, 60, 123456, 20,6);//字体高宽比更改
	CT_PutNumber(0, 180, 1234567, 20, 2,10);//字体间距更改1
	CT_PutNumber(0, 210, 12345678, 20, 2, 50);//字体间距更改2
	CT_PutNumber(0, 240, 233, 20, 2, 20,RED);//字体颜色更改
	CT_PutNumber(0, 280, 233, 20, 2, 20, 0xff6688,"黑体");//字体颜色更改和字体更改
	_getch();//不过不行就换成getch();
	closegraph();
	return 0;
}

你可能感兴趣的:(原创,函数)