EasyX趣味化编程note2,绘制基本图形(上)

简介: EasyX趣味化编程note2,绘制基本图形

在画图之前,我们首先要先创建一个窗体

创建窗体的函数

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

width为窗体宽度,height为窗体高度,最后一个参数可省略暂时不用管。

创建窗体后,我们必然要销毁掉窗体

销毁窗体的函数

void closegraph();

接下来创建一个宽800,高600的窗体,然后调用函数关闭它

int main()
{
  initgraph(800, 600);
  closegraph();
  return 0;
}

运行代码后,发现一个窗体一闪而过,我们可以暂时使用getchar函数暂时阻塞程序的运行,要使用getchar函数,我们又要包含头文件stdio.h。

加入代码后再次运行,效果如图

有了窗体,我们可以尝试画一些基本的图形来看一下

在运行后会出现两个窗体,终端还有创建的窗体,如果觉得不想要它可以改变终端

进入开发者选项后将由windows控制改为控制台主机即可

提前介绍一下画圆的函数

circle(int x,int y,int radius);

x,y为圆心的坐标,radius为圆的半径,加入这段代码,传入参数(0,0,300)绘制圆心为0,0,半径为300的圆,运行后效果如图

发现只有四分之一的圆,这是为什么呢?


介绍一下Easyx内的坐标系统,分为物理坐标和逻辑坐标,物理坐标和逻辑坐标的初始的坐标系都为下图

他们两个的不同的是

物理坐标系使描述窗体的坐标体系的,坐标原点和轴方向不可以更改,而逻辑坐标用于绘图的坐标体系。他的坐标原点和轴方向可以改变。

修改中心坐标函数

void setorgin(int x,int y);

将中心坐标改为坐标400,300的点,但此时y轴的方向依然是向下的

缩放函数

void setaspectratio(float xasp,float yasp);

xasp为x轴方向上的缩放因子,yasp为y轴方向上的缩放因子,如果传参数为负,则反转坐标系,将第二个参数设置为-1,更改y轴的方向,这时就形成了我们所更加熟练应用的坐标系。

添加后再次运行:

接下来是各种图形的绘制,Easyx配置了形形色色的绘制函数,让我们从绘制点来开始学习

绘制点的函数

void putpixel(int x,int y,COLORREF color);

x,y为在坐标轴的位置,COLOR color是绘制点的颜色,可以用RGB表示颜色,也可以用相应的颜色的大写英文字母来表示。

如下图

试着用绘制点的函数绘制一些点,因为一个点只有一像素,只绘制一个很难看清楚到底绘制出没有,利用for循环和设置随机数的函数生成多个点以便观察。因为我们创建的窗体大小有限制,要对生成的随机数进行处理,不能越过窗体的宽度和高度。

代码如下

int main()
{
  initgraph(800, 600);
  setorigin(400, 300);
  setaspectratio(1,-1);
  for (int i = 0; i < 1000; i++)
  {
    int x = rand() % (800 + 1) - 400;
    int y = rand() % (600 + 1) - 300;
    putpixel(x, y,WHITE);
  }
  //circle(0, 0, 300);
  getchar();
  closegraph();
  return 0;
}

运行后效果如图所示

圆的绘制

前边已经介绍过绘制圆的函数,不再详细描述,利用这个函数,我们画一组圆环,中心坐标不变,半径依次增大20像素,直到半径等于300为止。

代码如下

int main()
{
  initgraph(800, 600);
  setorigin(400, 300);
  setaspectratio(1, -1);
  for (int i = 0; i <= 300; i+=50)
  {
    circle(0, 0, i);
  }
  getchar();
  closegraph();
  return 0;
}

运行后如图所示

直线函数

void line(int x1,int y1,int x2,int y2)

(x1 ,y1)(x2 ,y2)分别为起始点的坐标和终止点的坐标,即线的两端。

使用一下看看效果

int main()
{
  initgraph(800, 600);
  setorigin(400, 300);
  setaspectratio(1, -1);
  line(200, 200, -200, -200);
  line(400, 0, -400, 0);
  line(0, 300, 0, -300);
  getchar();
  closegraph();
  return 0;
}

浅浅的绘制出坐标系,观察第一个画出的线的效果。

绘制矩形

void rectangle(int left,int top,int right,int bottom);

传入的参数和绘制直线的差不多,但表示的是一个矩形的左上角点的坐标和左下角点的坐标,知道了两个点,可以做出一个矩形。

int main()
{
  initgraph(800, 600);
  setorigin(400, 300);
  setaspectratio(1, -1);
  //画出坐标系
  line(400, 0, -400, 0);
  line(0, 300, 0, -300);
  //绘制矩形
  rectangle(-100,100,200,-200);
  getchar();
  closegraph();
  return 0;
}

运行后如图

目录
相关文章
|
2月前
|
C++
EasyX图形库学习(二、文字输出)
EasyX图形库学习(二、文字输出)
|
2月前
|
存储 编解码 Windows
EasyX图形库学习(三、用easyX控制图形界面中的小球、图片-加载、输出)
EasyX图形库学习(三、用easyX控制图形界面中的小球、图片-加载、输出)
|
2月前
|
API C语言 图形学
EasyX图形库学习(一、窗口创建函数initgraph、背景颜色设置setbkcolor、图形绘制函数)
EasyX图形库学习(一、窗口创建函数initgraph、背景颜色设置setbkcolor、图形绘制函数)
|
8月前
EasyX趣味化编程note2,绘制基本图形(下)
EasyX趣味化编程note2,绘制基本图形(上)
79 0
|
8月前
Easyx图形库趣味编程note3,颜色模型
Easyx图形库趣味编程note3,颜色模型
80 0
|
8月前
|
缓存
EasyX图形库note4,动画及键盘交互
EasyX图形库note4,动画及键盘交互
79 0
|
8月前
|
C语言 C++ Windows
利用EasyX图形库实现趣味化编程note1
利用EasyX图形库实现趣味化编程note1
35 0
|
8月前
|
区块链
EasyX趣味化编程note6,图片操作及文字
EasyX趣味化编程note6,图片操作及文字
69 0
|
11月前
|
XML JavaScript API
QT5图形与画图
Qt提供了很多关于获取窗体位置及显示区域大小的函数,如x( )、y()和pos()、 rect()、size()、geometry()等,统称为“位置相关函数”或"位置函数”,如图6.1 所示是几种主要的位置函数,图中清楚地标出了它们之间的区别。
82 0
|
12月前
Easyx绘制基本图形
Easyx绘制基本图形