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

2024-06-22 03:28

本文主要是介绍easyx之图形库复习--自制写轮眼的图形绘制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引子效果图如下:

什么是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;
}

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

这篇关于easyx之图形库复习--自制写轮眼的图形绘制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1083153

相关文章

可视化实训复习篇章

前言: 今天,我们来学习seaborn库可视化,当然,这个建立在Matplotlib的基础上,话不多说,进入今天的正题吧!当然,这个是《python数据分析与应用》书中,大家有需求的可以参考这本书。 知识点: Matplotlib中有两套接口分别是pyplot和pyylab,即绘图时候主要导入的是Matplotlib库下的两个子模块(两个py文件)matplotlib.pyplot和matp

数据库期末复习知识点

A卷 1. 选择题(30') 2. 判断范式(10') 判断到第三范式 3. 程序填空(20') 4. 分析填空(15') 5. 写SQL(25') 5'一题 恶性 B卷 1. 单选(30') 2. 填空 (20') 3. 程序填空(20') 4. 写SQL(30') 知识点 第一章 数据库管理系统(DBMS)  主要功能 数据定义功能 (DDL, 数据定义语

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用。如果你看不懂,请留言。 完整代码: <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><ti

复习2-20240624

vscode 使用 Javabean (封装性) public class Demo01 {/*1.原则 : 字母 数字 $ _ 中文 除了 这五个 其它都不可以2. 细则 : 数字 不能 开头%hbviunh &hfiureh )nhjrn 7487j -ni +hbiu tgf h

以canvas方式绘制粒子背景效果,感觉还可以

这个是看到项目中别人写好的,感觉这种写法效果还可以,就存留记录下 就是这种的背景效果。如果想改背景颜色可以通过canvas.js文件中的fillStyle值改。 附上demo下载地址。 https://download.csdn.net/download/u012138137/11249872

操作系统实训复习笔记(1)

目录 Linux vi/vim编辑器(简单) (1)vi/vim基本用法。 (2)vi/vim基础操作。 进程基础操作(简单) (1)fork()函数。 写文件系统函数(中等) ​编辑 (1)C语言读取文件。 (2)C语言写入文件。 1、write()函数。  读文件系统函数(简单) (1)read()函数。 作者本人的操作系统实训复习笔记 Linux

【云计算 复习】第1节 云计算概述和 GFS + chunk

一、云计算概述 1.云计算的商业模式 (1)软件即服务(SaaS) 有些景区给游客提供烧烤场地,游客需要自己挖坑或者砌烧烤台,然后买肉、串串、烧烤。 (2)平台即服务(PaaS) 有些景区给游客提供烧烤场地,同时搭建好烧烤台,游客只需要自己带食材和调料、串串、烧烤。 (3)基础设施即服务(IaaS) 有些景区给游客提供烧烤场地,同时搭建好烧烤台,还有专门的厨师来烧烤,用户不需要关心前面的所有

数据库原理与安全复习笔记(未完待续)

1 概念 产生与发展:人工管理阶段 → \to → 文件系统阶段 → \to → 数据库系统阶段。 数据库系统特点:数据的管理者(DBMS);数据结构化;数据共享性高,冗余度低,易于扩充;数据独立性高。DBMS 对数据的控制功能:数据的安全性保护;数据的完整性检查;并发控制;数据库恢复。 数据库技术研究领域:数据库管理系统软件的研发;数据库设计;数据库理论。数据模型要素 数据结构:描述数据库

Android SurfaceFlinger——图形内存分配器(十一)

前面的文章中的图层合成器(HWC),这里我们接着看一下 SurfaceFlinger 中的另一个重要服务——图形内存分配器。 一、简介         android.hardware.graphics.allocator@2.0 是 Android 系统中硬件抽象层(HAL)的一个组件,专门用于图形内存的分配和管理。它是 SurfaceFlinger 在处理图形数据时所依赖的

XMG 绘制形状

1. 除非是绘制曲线直接使用原生的。如果绘制形状直接使用UIBezerPath  2. 命名原则,类方法以类名开头 UIBezierPath bezierPathWithRect 3.圆角半径 画圆的大小 以每个顶点为圆心。给定的半径为半径画一个1/4圆。把周边的给切掉 4.只有封闭的形状调用这个方法才有用 [path fill] 5. stroke 描边一下