由字符,特殊符号或数字组成的各种形状的图形问题。
用循环,确定输出图形的行数和每行上的列数,确定每行第一个字符输出的空格数,找出每行上字符变化的规律。
图形输出常用模块:
for(i=1;i<=行数;i++) { for(j=1;j<=第i行前导空格数;j++) printf(""); for(k=1;k<=第i行字符串;k++) printf(第i行,第j行字符); printf("\n"); }
1.输出一个数字三角形。
代码如下:
#include <stdio.h> #include <stdlib.h> int main() { int i,j,k; for(i=1;i<=5;i++) {for(j=1;j<=5-i;j++) printf(" "); for(k=1;k<=2*i-1;k++) printf("%d",k); printf("\n"); } return 0; }
2.输出一个菱形。
代码如下:
#include <stdio.h> int main() { int i,j ,k; for(i=1;i<=4;i++) { for(j=1;j<=5-i;j++) printf(" "); for(k=1;k<=2*i-1;k++) printf("*"); printf("\n"); } for(i=1;i<=3;i++) { for(j=1;j<=i+1;j++) printf(" "); for(k=1;k<=7-2*i;k++) printf("*"); printf("\n"); } return 0; }
① 设置背景色:
void setbkcolor(int color);
② 设置前景色:
void setcolor(int color);
③ 清除图形屏幕内容,使用清屏函数,其调用格式如下:
void cleardevice( );
注:清除前景图形,不清除背景。
① 画点函数:
将点(x, y)置成color色:void putpixel(int x, int y, int color);
获得当前点(x, y)的颜色值:int getpixel(int x, int y);
例:使(20, 50)的像素点置成红色输出。
putpixel(20, 50, RED);
② 有关坐标位置的函数:
③ 画线函数:
画一条从点(x0, y0)到(x1, y1)的直线:
void line(int x0, int y0, int x1, int y1);
画一条从现行游标到点(x, y)的直线:
void lineto(int x, int y);
画一条从现行游标(x, y)到按相对增量确定的点(x+dx, y+dy)的直线:void linerel(int dx, int dy);
④ 画圆弧类函数:
以(x, y)为圆心,radius为半径,画一个圆:
void circle(int x, int y, int radius);
以(x, y)为圆心,radius为半径,从stangle开始到endangle结束(用度表示),画一段圆弧线,逆时针方向:
void arc(int x, int y, int stangle, int endangle, int radius);
以(x, y)为中心,xradius、yradius为x轴和y轴半径,从角stangle开始,endangle结束,画一段椭圆线,
当stangle=0,endangle=360时,画出一个完整的椭圆:
void ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius);
⑤ 画多边形类函数:
以(x1, y1)为左上角,(x2, y2)为右下角,画一个矩形框:
void rectangle(int x1, int y1, int x2, inty2);
画一个顶点数为numpoints,各顶点坐标由整型数组polypoints给出的多边形。polypoints必须至少有2倍顶点数个元素。
每个顶点坐标都定义为x、y,且x在前。当画一个封闭多边形时,numpoints的值取实际多边形的顶点数 +1,且数组polypoints中第一个和最后一个点的坐标相同:void drawpoly(int numpoints, int *polypoints);
① 线型:C语言能够使用的线型如表所示。
② 线宽:C语言能够使用的线宽如表所示。
③ setlinestyle函数:
例如:希望设置的线型为前12位不显示,后4位显示。
此时,pattern值为15,调用方法为setlinestyle(4, 15, 1)。
① setfillstyle函数:
② floodfill函数
③ setfillpattern函数
测试要保存左上角为(x1, y1),右下角为(x2, y2)的图形屏幕区域内的全部内容需多少个字节:
unsigned imagesize(int x1, int y1, int x2, int y2);
将左上角为(x1, y1),右下角为(x2, y2)的图形屏幕区域内的图像保存在内存中,指针为mapbuf:
void getimage(int x1, int y1, int x2, int y2, void *mapbuf);
将图像输出到左上角为点(x, y)的位置上,其中参数op规定如何释放内存中的图像,具体值如表:
void putimage(int x, int y, void * mapbuf, int op);
文本输出函数 在现行位置输出字符串指针textstring所指的文本:
void outtext(char *textstring);
在规定的(x, y)位置输出字符串指针textstring所指的文本,其中x和y为象元坐标:
void outtextxy(int x, int y, char *textstring);
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。