easyx之图形库复习--自制写轮眼的图形绘制

发布于:2024-06-22 ⋅ 阅读:(78) ⋅ 点赞:(0)

引子效果图如下:

什么是easyx?

EasyX 是针对 C/C++ 的图形库,可以帮助使用C/C++语言的程序员快速上手图形和游戏编程。比如,可以用 VC + EasyX 很快的用几何图形画一个房子,或者一辆移动的小车,可以编写俄罗斯方块、贪吃蛇、黑白棋等小游戏,可以练习图形学的各种算法,等等。

个人认为有点像api,web前段等功能

如何画(针对我效果图而言需要的而言)?

基础库?

#include<easyx.h>
#include<stdio.h>
#include<graphics.h>
#define b 3.14

基础函数

1,initgraph()这个函数用于初始化绘图窗口

width 绘图窗口的宽度。

height 绘图窗口的高度。

flag 绘图窗口的样式,默认为 NULL。

initgraph(
	int width,
	int height,
	int flag = NULL
);

2,closegraph()这个函数用于关闭绘图窗口

3,setaspectratio()函数用于设置当前缩放因子void setaspectratio(float xasp,float yasp);

as:setaspectratio(1, -1);表示在x方向上是正,y方向上是负。即我们常见的坐标轴!

4,setbkcolor()这个函数用于设置当前设备绘图背景色。

表示颜色的方法

    1 . 用预定义常量表示颜色

常量			值			颜色
--------		--------	--------
BLACK			0			黑
BLUE			0xAA0000	蓝
GREEN			0x00AA00	绿
CYAN			0xAAAA00	青
RED				0x0000AA	红
MAGENTA			0xAA00AA	紫
BROWN			0x0055AA	棕
LIGHTGRAY		0xAAAAAA	浅灰
DARKGRAY		0x555555	深灰
LIGHTBLUE		0xFF5555	亮蓝
LIGHTGREEN		0x55FF55	亮绿
LIGHTCYAN		0xFFFF55	亮青
LIGHTRED		0x5555FF	亮红
LIGHTMAGENTA	0xFF55FF	亮紫
YELLOW			0x55FFFF	黄
WHITE			0xFFFFFF	白

   2. 用 16 进制数字表示颜色

     16 进制的颜色表示规则为:0xbbggrr (bb=蓝,gg=绿,rr=红)

      3. 用 RGB 宏合成颜色

5,cleardevice()这个函数使用当前背景色清空绘图设备

6,setlinecolor()这个函数用于设置当前设备画线颜色

7,setfillstyle()这个函数用于设置当前设备填充样式

8,setbkmode()这个函数用于设置当前设备图案填充和文字输出时的背景模式

9,settextcolor()这个函数用于设置当前文字颜色。

10,settextstyle()这个函数用于设置当前文字样式

void settextstyle(
	int nHeight,
	int nWidth,
	LPCTSTR lpszFace,
	int nEscapement,
	int nOrientation,
	int nWeight,
	bool bItalic,
	bool bUnderline,
	bool bStrikeOut,
	BYTE fbCharSet,
	BYTE fbOutPrecision,
	BYTE fbClipPrecision,
	BYTE fbQuality,
	BYTE fbPitchAndFamily
);

11,outtextxy()这个函数用于在指定位置输出字符串

12,circle()画圆

13,putpixel()这个函数用于画点

14,line()画线

15,ellipse()画椭圆

16,rectangle()这个函数用于画无填充的矩形

17,arc()这个函数用于画椭圆弧

18,polygon()这个函数用于画无填充的多边形。

19,getchar()阻塞作用,不然太快!

代码示例:

int main()
{
    initgraph(800,600);//初始化绘图窗口
    setorigin(400, 300);//改变逻辑坐标,根据物理坐标
    setaspectratio(1, -1);//翻转逻辑坐标
    setbkcolor(BLACK);//摄制背景颜色
    cleardevice();//清屏
    setlinecolor(GREEN);//设置线条颜色
    //setfillstyle(BS_SOLID, 5);
    setfillstyle(BS_HATCHED, 5);//线条风格
    setbkmode(TRANSPARENT);//字体背景为透明色
    settextcolor(GREEN);//字体为绿色
    settextstyle(30, 0,"华文新魏");
    outtextxy(-365, 260, "Writing wheel eyes");//输出字符串(自适应字符集)
    circle(0, 0, 300);//画圆形
    putpixel(0, 0, YELLOW);//画点,坐标+颜色
    putpixel(200, 200, RED);
    putpixel(-200, 200, WHITE);
    putpixel(200, -200, LIGHTGREEN);
    putpixel(-200, -200, LIGHTBLUE);
    for (int i = 0; i < 1000; i++)
    {
        int x = rand() % (800 + 1)-400;
        int y = rand() % (600 + 1)-300;
        putpixel(x, y, LIGHTGREEN);
    }
    line(200, 200, -200, -200);//直线的函数
    line(200, -200, -200, 200);
    ellipse(150,150,-150,-150);//椭圆的函数
    rectangle(150, 150, -150, -150);//矩形的函数
    //pie(100, 100, -100, -100, 0,b / 4);//扇形
    arc(100, -100, -100, 100, 0, b / 4);//圆弧线
    arc(100, -100, -100, 100, b/2, 3*b / 4);
    arc(100, -100, -100, 100,b, 5*b / 4);
    arc(100, -100, -100, 100,3*b/2, 7*b / 4);
    POINT point1[] = { {0,300},{200,200},{-200,200} }; 
    POINT point2[] = { {0,-300},{-200,-200},{200,-200} }; 
    POINT point3[] = { {-300,0},{-200,200},{-200,-200} }; 
    POINT point4[] = { {300,0},{200,200},{200,-200} }; 
    polygon(point1, 3);//多边形的绘制
    polygon(point2, 3);//多边形的绘制
    polygon(point3, 3);//多边形的绘制
    polygon(point4, 3);//多边形的绘制
    getchar();//柱塞程序的运行
    closegraph();//关闭图形窗口
    return 0;
}

有机会:我还会展示更多图形的绘制!


网站公告

今日签到

点亮在社区的每一天
去签到