/******************************************************
* EasyX Library for C++ (Ver:v20111031(beta))
* http://www.easyx.cn
*
* graphics.h
* 在 VC 下模拟 Borland BGI 绘图库,实现简单的绘图
******************************************************/
#pragma once
#ifndef WINVER
#define WINVER 0x0400 // Specifies that the minimum required platform is Windows 95/NT4.
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0500 // Specifies that the minimum required platform is Windows 95/NT4.
#endif
#ifndef _WIN32_WINDOWS
#define _WIN32_WINDOWS 0x0410 // Specifies that the minimum required platform is Windows 98.
#endif
#if defined(UNICODE) && (_MSC_VER > 1200)
#pragma comment(lib,"graphicswu.lib")
#elif !defined(UNICODE) && (_MSC_VER > 1200)
#pragma comment(lib,"graphicsw.lib")
#elif defined(UNICODE)
#pragma comment(lib,"graphicsu.lib")
#elif !defined(UNICODE)
#pragma comment(lib,"graphics.lib")
#endif
#include <windows.h>
#include <tchar.h>
// 为了兼容 Borland C++ 3.1 而做的无意义定义
#define DETECT 0
#define VGA 0
#define VGAHI 0
// 绘图环境初始化参数
#define SHOWCONSOLE 1 // 进入图形模式时,保留控制台的显示
// 颜色
#define BLACK 0
#define BLUE 0xA80000
#define GREEN 0x00A800
#define CYAN 0xA8A800
#define RED 0x0000A8
#define MAGENTA 0xA800A8
#define BROWN 0x0054A8
#define LIGHTGRAY 0xA8A8A8
#define DARKGRAY 0x545454
#define LIGHTBLUE 0xFC5454
#define LIGHTGREEN 0x54FC54
#define LIGHTCYAN 0xFCFC54
#define LIGHTRED 0x5454FC
#define LIGHTMAGENTA 0xFC54FC
#define YELLOW 0x54FCFC
#define WHITE 0xFCFCFC
// 定义颜色转换宏
#define BGR(color) ( (((color) & 0xFF) << 16) | ((color) & 0xFF00FF00) | (((color) & 0xFF0000) >> 16) )
// 填充模式
#define NULL_FILL 1 // 不填充
#define SOLID_FILL 2 // 用指定颜色完全填充
#define BDIAGONAL_FILL 3 // /// 填充 (普通一组)
#define CROSS_FILL 4 // +++ 填充
#define DIAGCROSS_FILL 5 // xxx 填充
#define DOT_FILL 6 // ... 填充
#define FDIAGONAL_FILL 7 // \\\ 填充
#define HORIZONTAL_FILL 8 // --- 填充
#define VERTICAL_FILL 9 // ||| 填充
#define BDIAGONAL2_FILL 10 // /// 填充 (密集一组)
#define CROSS2_FILL 11 // +++ 填充
#define DIAGCROSS2_FILL 12 // xxx 填充
#define DOT2_FILL 13 // ... 填充
#define FDIAGONAL2_FILL 14 // \\\ 填充
#define HORIZONTAL2_FILL 15 // --- 填充
#define VERTICAL2_FILL 16 // ||| 填充
#define BDIAGONAL3_FILL 17 // /// 填充 (粗线一组)
#define CROSS3_FILL 18 // +++ 填充
#define DIAGCROSS3_FILL 19 // xxx 填充
#define DOT3_FILL 20 // ... 填充
#define FDIAGONAL3_FILL 21 // \\\ 填充
#define HORIZONTAL3_FILL 22 // --- 填充
#define VERTICAL3_FILL 23 // ||| 填充
#define INTERLEAVE_FILL 24 // xxx 填充 (十分密)
#define PATTERN_FILL 25 // 用指定图案填充
// 绘图模式相关函数
HWND initgraph(int Width, int Height, int Flag = NULL); // 初始化图形环境
HWND initgraph(int* gdriver, int* gmode, char* path); // 兼容 Borland C++ 3.1 的重载,默认 640x480
void closegraph(); // 关闭图形环境
// 绘图环境设置
void cleardevice(); // 清屏
void setcliprgn(HRGN hrgn); // 设置当前绘图设备的裁剪区
void clearcliprgn(); // 清除裁剪区的屏幕内容
void getlinestyle(int *plinestyle, WORD *pupattern = NULL, int *pthickness = NULL); // 获取当前线形
void setlinestyle(int linestyle, WORD upattern = NULL, int thickness = 1); // 设置当前线形
void getfillstyle(COLORREF *pcolor, int *ppattern = NULL, char *pupattern = NULL); // 获取填充类型
void setfillstyle(COLORREF color, int pattern = SOLID_FILL, const char *pupattern = NULL); // 设置填充类型
void setorigin(int x, int y); // 设置坐标原点
void getaspectratio(float *pxasp, float *pyasp); // 获取当前缩放因子
void setaspectratio(float xasp, float yasp); // 设置当前缩放因子
void setwritemode(int mode); // 设置绘图位操作模式
void graphdefaults(); // 重置所有绘图设置为默认值
COLORREF getcolor(); // 获取当前绘图前景色
void setcolor(COLORREF color); // 设置当前绘图前景色
COLORREF getbkcolor(); // 获取当前绘图背景色
void setbkcolor(COLORREF color); // 设置当前绘图背景色
void setbkmode(int iBkMode); // 设置背景混合模式
// 颜色模型转换函数
COLORREF RGBtoGRAY(COLORREF rgb);
void RGBtoHSL(COLORREF rgb, float *H, float *S, float *L);
void RGBtoHSV(COLORREF rgb, float *H, float *S, float *V);
COLORREF HSLtoRGB(float H, float S, float L);
COLORREF HSVtoRGB(float H, float S, float V);
// 绘图函数
COLORREF getpixel(int x, int y); // 获取点的颜色
void putpixel(int x, int y, COLORREF color); // 画点
void moveto(int x, int y); // 移动当前点(绝对坐标)
void moverel(int dx, int dy); // 移动当前点(相对坐标)
void line(int x1, int y1, int x2, int y2); // 画线
void linerel(int dx, int dy); // 画线(至相对坐标)
void lineto(int x, int y); // 画线(至绝对坐标)
void rectangle(int left, int top, int right, int bottom); // 画矩形
void circle(int x, int y, int radius); // 画圆
void ellipse(int left, int top, int right, int bottom); // 画椭圆
void arc(int left, int top, int right, int bottom, double stangle, double endangle); // 画椭圆弧(起始角度和终止角度为弧度制)
void fillcircle(int x, int y, int radius); // 画填充圆
void fillellipse(int left, int top, int right, int bottom); // 画填充椭圆
void pie(int left, int top, int right, int bottom, double stangle, double endangle); // 画填充椭圆扇形(起始角度和终止角度为弧度制)
void bar(int left, int top, int right, int bottom); // 画无边框填充矩形
void bar3d(int left, int top, int right, int bottom, int depth, bool topflag); // 画有边框三维填充矩形
void drawpoly(int numpoints, const int *polypoints); // 画多边形
void fillpoly(int numpoints, const int *polypoints); // 画填充的多边形
void floodfill(int x, int y, int border); // 填充区域
// 文字相关函数
void outtext(LPCTSTR str); // 在当前位置输出字符串
void outtext(TCHAR c); // 在当前位置输出字符
void outtextxy(int x, int y, LPCTSTR str); // 在指定位置输出字符串
void outtextxy(int x, int y, TCHAR c); // 在指定位置输出字符
int textwidth(LPCTSTR str); // 获取字符串占用的像素宽
int textwidth(TCHAR c); // 获取字符占用的像素宽
int textheight(LPCTSTR str); // 获取字符串占用的像素高
int textheight(TCHAR c); // 获取字符占用的像素高
int drawtext(LPCTSTR str, RECT* pRect, UINT uFormat); // 在指定区域内以指定格式输出字符串
int drawtext(TCHAR c, RECT* pRect, UINT uFormat); // 在指定区域内以指定格式输出字符
// 设置当前字体样式(详见帮助)
// nHeight: 字符的平均高度;
// nWidth: 字符的平均宽度(0 表示自适应);
// lpszFace: 字体名称;
// nEscapement: 字符串的书写角度(单位 0.1 度);
// nOrientation: 每个字符的书写角度(单位 0.1 度);
// nWeight: 字符的笔画粗细(0 表示默认粗细);
// bItalic: 是否斜体;
// bUnderline: 是否下划线;
// bStrikeOut: 是否删除线;
// fbCharSet: 指定字符集;
// fbOutPrecision: 指定文字的输出精度;
// fbClipPrecision: 指定文字的剪辑精度;
// fbQuality: 指定文字的输出质量;
// fbPitchAndFamily: 指定以常规方式描述字体的字体系列。
void setfont(int nHeight, int nWidth, LPCTSTR lpszFace);
void setfont(int nHeight, int nWidth, LPCTSTR lpszFace, int nEscapement, int nOrientation, int nWeight, bool bItalic, bool bUnderline, bool bStrikeOut);
void setfont(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);
void setfont(const LOGFONT *font); // 设置当前字体样式
void getfont(LOGFONT *font); // 获取当前字体样式
// 图像处理函数
// 定义图像对象
class IMAGE
{
private:
HBITMAP m_hBmp;
HDC m_hMemDC;
int m_Width, m_Height;
int m_MemCurX; // 当前点X坐标
int m_MemCurY; // 当前点Y坐标
float m_data[6];
COLORREF m_Color; // 当前颜色
COLORREF m_BkColor; // 当前背景颜色
DWORD*
没有合适的资源?快使用搜索试试~ 我知道了~
EasyX库(graphics.h) 测试版 (2011-10-31 更新)
共9个文件
lib:6个
hta:1个
chm:1个
4星 · 超过85%的资源 需积分: 9 47 下载量 119 浏览量
2011-11-17
20:08:35
上传
评论
收藏 460KB ZIP 举报
温馨提示
EasyX库(graphics.h) 测试版 (2011-10-31 更新) [新增功能] •增加了对 64 位编译平台的支持 (2011-10-16)。 [功能调整] (无) [bug 修正] •修正了 setcolor 对 drawtext 无效的问题 (2011-5-2); •修正了文字输出不稳定的问题 (2011-5-21); •修正了与某些翻译软件的“划词翻译”功能的冲突 (2011-5-31); •修正了 circle 和 ellipse 函数有时会不完全封闭的问题 (2011-6-12。 [其他] •更新了帮助文件 (2011-6-12); •改善了安装程序对 Win7 / Vista 的支持 (2011-6-9); •提高了安装程序对中文系统的兼容性 (2011-7-16)); •提高了安装程序的兼容性 (2011-10-31)。 如果您在使用 EasyX 当中遇到了问题,或者有更好的建议,请到社区提出:http://tieba.baidu.com/f?kw=easyx。新的测试版本仍会在这里发布。
资源推荐
资源详情
资源评论
收起资源包目录
EasyX_v20111031(beta).zip (9个子文件)
Setup.hta 11KB
include
graphics.h 11KB
EasyX_Help.chm 249KB
lib
amd64
graphicsw.lib 196KB
graphicswu.lib 197KB
graphics.lib 100KB
graphicsu.lib 100KB
graphicsw.lib 140KB
graphicswu.lib 141KB
共 9 条
- 1
资源评论
- lifies2013-10-20不会浪费积分,可以使用
- ahpu5052012-12-23下完后可以使用
- a5207282014-06-18总体感觉不错
sally2201
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于深度混合核极限学习机DHKELM的回归预测,优化算法采用的是北方苍鹰NGO,可替成其他方法
- 双馈电机三矢量模型预测控制
- 基于SAP SPRO功能的HTML设计源码
- comsol实现激光熔覆的凝固相场树枝晶生长 考虑溶质、 相场 温度场耦合 提供资料 全套的模型文件和参考文献以及讲解视频 利用
- 基于Vue框架开发的分宜小学主题网站设计源码
- abaqus 随机喷丸仿真,附带随机喷丸模型生成源程序,模型尺寸,丸粒尺寸,个数,角度,速度等均可自由改动 源程序讲解
- 基于YOLOv8+CRNN算法的车牌监测与识别系统设计源码
- 基于Python的课表网站HTML/CSS/JavaScript设计源码
- 基于知识图谱与Java技术的音乐推荐系统设计源码
- 基于Java和HTML的美发店会员管理系统设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功