2014-04-02-c-C语言图形化界面相关函数

走成华大道,到二仙桥,练腰马合一

[TOC]

C语言图形化界面相关函数

基本

初始化图形界面

int gdriver;
int gmode; 
gdriver = DETECT;
initgraph(&gdriver,&gmode,"" );

清空屏幕

cleardevice ();

退出图形化界面

closegraph ();

前景色/背景色

画图之前未设定调用颜色,则背景色默认为黑色,前景色默认为白色

setbkcolor (WHITE); // 背景色
setcolor (4); // 前景色

颜色定义:

颜色代码 	字符常量	颜色		用途
0		BLACK				前景,背景  
1		BLUE				前景,背景  
2		GREEN		绿		前景,背景  
3		CYAN				前景,背景  
4		RED				前景,背景  
5		MAGENTA		洋红		前景,背景  
6		BROWN				前景,背景  
7		LIGHTGRAY	淡灰		前景
8		DARKGRAY	深灰		前景
9		LIGHTBLUE	淡蓝		前景
10		LIGHTGREEN	淡绿		前景
11		LIGHTCYAN	淡青		前景
12		LIGHTRED	淡红		前景
13		LIGHTMAGENTA	淡洋红		前景
14		YELLOW				前景
15		WHITE				前景
128		BLINK		闪烁		前景

基本画图函数

比较常用的

void far line (int x1, int y1, int x2, int y2)  // 画线
void far setlinestyle (int linestyle, unsigned upattern, int thickness); // 设置线的形状
linestyle 设置线的形状,
0 实线
1 点线
2 中心线
3 点画线
4 用户定义线

thickness 设置线的宽度
1 一个像素宽(默认值)
3 三个像素宽

linestyle取值为 4时,还必须设置upattern参数。此时upattern16位二进制数
每一位代表一个像素,该位为1则画像素点,为0则不画。
    
void far circle (int x, int y, int radius); // 画圆圈
void far rectangle (int x1, int y1, int x2, int y2); // 画矩形

比较少用的

void far putpixel (int x, int y, int color) // 画点
void far linerel (int dx, int dy); // 从当前光标 (x,y)画线到点 (x +dx , y + dy)
void far arc (int x, int y, int stangle, int endangle, int radius); // 画弧线
void far ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius) // 画椭型
void far drawpoly (int numpoints , int far * polypoints) // 画多边形,顶点数为  numpoints  各顶点坐标由  polypoints 给出

没测出效果的

// 自己测试的时候下面四个得到的值都是0
int far getmaxx (void)   
int far getmaxy (void)
int far getx (void)
int far gety (void)
// 自己测试的时候下面两个没看到效果
void far moveto (int x, int y) 光标移动到 x,y)点,在移动过程中画点
void far moverel int dx, int dy); 光标从 (x,y)移动到 (x+dx, y+dy)的位置,移动中不画店

一个栗子

#include "stdio.h"
#include "conio.h"
#include "graphics.h"

void main ()
{
    int gdriver;
    int gmode;

    int arw[16] = {200, 102,
                   300, 102,
                   300, 107,
                   330, 100,
                   300, 93,
                   300, 98,
                   200, 98,
                   200, 102};
    gdriver = DETECT;
    initgraph(&gdriver,&gmode,"" );
    setbkcolor (WHITE);
    cleardevice ();
    setcolor (BLUE);
    circle (320, 240, 98);
    setlinestyle (0, 0, 3);
    setcolor (GREEN);
    rectangle (220, 140, 420, 340);
    setcolor (GREEN);
    setlinestyle (4,0xaaaa, 3);
    line (220, 240, 420, 240);
    line (320, 140, 320, 340);
    getch();
    closegraph ();
    return 0;
}

填充函数

void far setfillstyle (int pattern, int  color ) // 设置填充模式以及颜色。
    符号常量		数值		含义	
			0		以背景色颜色填充
			1		以实线填充
			2		以直线填充
			3		以斜线填充(阴影线)
			4		以粗斜线填充(粗阴影线)
			5		以粗反斜线填充(~
			6		以反斜线填充(~
			7		以直方网格填充
			8		以斜网格填充
			9		以间隔点填充
			10		以大间隔点填充
			11		以小间隔点填充
			12		以用户自定义样图填充
    
void far floodfill (int x, int y, int border); // 填充
// 做五子棋的时候, 我这样设置红方的棋子。
setfillstyle(1,RED);  
floodfill(XiaoYuanX1+10,XiaoYuanY1+10,7);

图形界面下输出文本

void far outtext (char far *textstring); // 当前位置输出字符串
void far outtext (int x, int y, far *textstring ) // 在 (x,y) 位置输出字符串
outtextxy(230,30,"player   use Red   chess!");

int sprintf (char * str, char *format, 变量列表)
char s[30];
int i = 400;
sprintf (s, "your score is %d", i );
void far settextjustify (int horiz, int vert); // 定位输出字符串时的对齐方式,
参数名		符号常量		含义
horiz 		LEFT_TEXT	0	左对齐
		CENTER_TEXT	1	中心对齐
		RIGHT_TEXT	2	右对齐

vert		BOTTON	
void far settextstyle (int font, int direction, int charsize); // 设置字体
font 字型
direction 输出方向
charsize 字符大小
    
font
符号		数值		含义
DEFAULT_FONT	0		8*8点阵字(默认)
TRIPLEX_FONT	1		三重笔画字体
SMALL_FONT	2		小号画笔字体
SANSSERIF_FONT	3		无衬线画笔字体
GOTHIC_FONT	4		黑体笔画笔

direction
HORIZ_DIR	0		从左到右
VERT_DIR	1		从底到顶


charsize
		1		8*8
		2		16*16
		3		24*24
        '''
		10		80*80
USER_CHAR_SIZE=0	用户定义字符大小    

栗子-五子棋

图

图