C++ easyX小程序(介绍几个函数的使用)

本小程序通过代码和注释,介绍了easyX窗口及控制台窗口的设置方法;还介绍了easyX中关于颜色、线型、画圆、画方、显示文字以及鼠标消息处理等函数的使用方法。为便于理解,本程序同时使用控制台和easyX窗口,由控制台控制程序运行、由easyX窗口显示效果。本程序在VS2022上运行通过(注意:需要提前安装easyX)。

#include <iostream>

#include <string>

#include <sstream> //使用stringstream对象需包含

#include <graphics.h> //使用easyX需包含

using namespace std;

int main()

{

initgraph(640,480,1); //设置easyX窗口

//参1、2 easyX窗口大小

//参3 0--仅显示easyX窗口 1--同时显示控制台窗口

system("mode con cols=65 lines=12"); //设置控制台窗口

//以字符串方式设置控制台窗口大小 cols为列最小值13,lines为行最小值1

cout << "在(100,100)位置画一个背景蓝色 线宽5 线颜色红 半径50的圆" << endl;

setbkcolor(BLUE);//设置背景颜色

cleardevice();//清屏

setlinecolor(RED);//设置线条颜色

setlinestyle(0,5);//设置线型

circle(100,100,50);//画一个半径50的圆

system("pause");

cout << "在(100,100)位置画一个黄色填充 半径50的圆" << endl;

cleardevice();//清屏

setfillcolor(YELLOW);//设置填充色

//知识点:我们在画下面的填充圆时,仅对填充颜色进行了设置,对背景色、线宽、线颜色

//没有设置,那么未设置的参数程序会继续使用前面的设置,也就是这里画出的圆除了中间

//填充有黄色外,外圈仍带有一个红边。如果从开始就没有进行任何设置,那么程序会使用

//系统的缺省设置。包括本行的填充色以及后边的字体、颜色等等都是这样。系统当前的设

//置情况有专门的函数可以获得,无需用脑记。

fillcircle(100,100,50);//画填充圆

system("pause");

cout << "在(100,100)位置输出一行颜色红色、楷体、高度50的字符串" << endl;

cleardevice();//清屏

settextcolor(RED);

settextstyle(30,0,"楷体");//参2 0代表缺省

setbkmode(TRANSPARENT);//背景透明模式

outtextxy(100,100,TEXT("红色、楷体、高度50的字符串"));

system("pause");

cout << "在一个填充矩形框中居中显示文字" << endl;

cleardevice();//清屏

fillrectangle(200,50,500,100); //填充矩形框 参1、2 左上角坐标 参3、4 右下角坐标

string str="好好学习 天天向上";

int w=textwidth(str.c_str()); //获得字符串宽度

int h=textheight(str.c_str()); //获得字符串高度

outtextxy(200+(500-200)/2-w/2,50+(100-50)/2-h/2,str.c_str()); //居中计算公式

system("pause");

cout << "显示鼠标左、右键按下事件" << endl;

stringstream s_i;

//stringstream包含在sstream头文件中,这是一个用于string类型与int类型互转的类,用起来

//很方便。具体使用方法见后。

cleardevice();//清屏

outtextxy(50,50,TEXT("请在空白处单击鼠标左键(单击右键退出程序):"));

settextstyle(15, 0, "宋体");//把下面要显示坐标的字号设的小一些

while(1)

{

if(MouseHit())

{ MOUSEMSG msg=GetMouseMsg();

switch(msg.uMsg)

{

case WM_LBUTTONDOWN:

s_i << "左键在(" <<msg.x << "," << msg.y << ")被按下\n";

//s_i是前边声明的一个stringstream对象,是一个流对象;不仅可以传入string型,

//也可已传入int等其他类型;作为与string类型的中介很是方便。

s_i>>str; //从stringstream类型传入string类型

s_i.clear(); //stringstream类型对象用后要清空,否则影响后续使用。

outtextxy(msg.x, msg.y, str.c_str());

break;

case WM_RBUTTONDOWN:

closegraph();//将easyX窗口关闭

exit(0); //退出程序

}

}

}

return 0;

}

相关推荐
Q741_1474 分钟前
C++ 面试高频考点 链表 迭代 递归 力扣 25. K 个一组翻转链表 每日一题 题解
c++·算法·链表·面试·递归·迭代
syker19 分钟前
手搓UEFI.h
c++
LIZhang201644 分钟前
基于ffmpeg8.0录制mp4文件
开发语言·c++
_OP_CHEN1 小时前
C++进阶:(九)深度剖析unordered_map 与 unordered_set容器
开发语言·c++·stl容器·哈希表·哈希桶·unordered_map·unordered_set
freedom_1024_2 小时前
LRU缓存淘汰算法详解与C++实现
c++·算法·缓存
无敌最俊朗@2 小时前
C++-Qt-音视频-基础问题01
开发语言·c++
折戟不必沉沙2 小时前
C++四种类型转换cast,其在参数传递时的作用
c++
2501_915909062 小时前
Flutter 应用怎么加固,多工具组合的工程化实战(Flutter 加固/Dart 混淆/IPA 成品加固/Ipa Guard + CI)
android·flutter·ios·ci/cd·小程序·uni-app·iphone
kyle~2 小时前
C++---万能指针 void* (不绑定具体数据类型,能指向任意类型的内存地址)
开发语言·c++
誰能久伴不乏2 小时前
Linux 进程通信与同步机制:共享内存、内存映射、文件锁与信号量的深度解析
linux·服务器·c++