赞
踩
Easyx常见必备头文件:
#include<graphics.h>//必备
#include<conio.h>
#include<mmsystem.h>
#include<easyx.h>
#include<stdlib.h>
#include<string>
绘图方法:
initgraph(640, 480, EW_SHOWCONSOLE);//创建窗口
closegraph();//关闭窗口,与创建窗口是一对必备的。通常放在最后
setbkcolor(WHITE);//设置窗口背景颜色
setbkcolor(RGB(红色部分,绿色部分,蓝色部分));//设置窗口背景颜色的另一种方法
setlinecolor(WHITE);//设置线条颜色
settextcolor(WHITE);//设置文字颜色
setfillcolor(BLUE);//设置当前填充颜色
cleardevice();//是用当前背景色清空屏幕,并将当前点移至 (0, 0),一般设置一种颜色之后就要这操作
setbkmode(TRANSPARENT);//设置图案填充和文字输出时的背景模式.TRANSPARENT 背景是透明的。OPAQUE 不透明的,背景用当前背景色填充(默认)。
setlinestyle();//设置线条格式。
fillcircle(横坐标, 纵坐标, 半径);//填充圆(有边框)。使用当前线形和当前填充样式
solidcircle((横坐标, 纵坐标, 半径);//这个函数用于画填充圆(无边框)。
line(起始点的 x 坐标, 起始点的 y 坐标, 终止点的 x 坐标, 终止点的 y 坐标);//画线
putpixel(点的 x 坐标, 点的 y 坐标, 点的颜色);//这个函数用于画点。
BeginBatchDraw();//用于开始批量绘图。执行后,任何绘图操作都将暂时不输出到屏幕上
FlushBatchDraw();//用于执行未完成的绘制任务
EndBatchDraw();//用于结束批量绘制,并执行未完成的绘制任务。
ExMessage msg;
a = int getwidth();//返回 IMAGE 对象的宽度,以像素为单位。
b = int getheight();//返回 IMAGE 对象的高度,以像素为单位。
loadimage(保存图像的 IMAGE 对象指针, 图片文件名, 图片的拉伸宽度, 是否调整 IMAGE 的大小以适应图片);//这个函数用于从文件中读取图像。
putimage(绘制位置的 x 坐标, 绘制位置的 y 坐标, 要绘制的 IMAGE 对象指针, 三元光栅操作码);//这个函数的几个重载用于在当前设备上绘制指定图像。
clearrectangle(矩形左部 x 坐标, 矩形上部 y 坐标, 矩形右部 x 坐标, 矩形下部 y 坐标);//这个函数用于清空矩形区域
outtextxy(输出时头字母的 x 轴的坐标值, 输出时头字母的 y 轴的坐标值, LPCTSTR str);//用于在指定位置输出字符串。
getchar();//暂停窗口,不让其退出
//设置背景模式,transparent透明
setbkmode(TRANSPARENT);
settextcolor(RGB(173, 0, 13));
outtextxy(50, 50, "我是人才");
//circle圆形 ellipse椭圆 pie扇形 polygon多边形 retangle矩形 roundrect圆角矩形 line线 putpixel点
//把文字居中
settextstyle(50,0,"楷体");//设置文字样式,大小,字体
fillrectangle(200, 50, 500, 100);
settextcolor(RGB(173, 0, 13));
char arr[] = L"我是人才";
int width = 300 / 2 - textwidth(arr) / 2;
int height = 50 / 2 - textheight(arr) / 2;
outtextxy(width + 200, height + 50, arr);
输出图片:
IMAGE img;
loadimage(&img, "文件途径");//相对路径
putimage(0, 0, &img);
for (int y = 0; y <= 480; y += 10)
{
fillcircle(100, y, 25);
Sleep(100);
cleardevice();
}//设好小球后,用这种方法可以让小球掉落
for (int y = 0; y <= 480; y += 10)
{
setcolor(GREEN);
setfillcolor(BLUE);
fillcircle(100, y, 25);
Sleep(100);//意思是将绘制出来的圆在显示100毫秒后,将其用背景色覆盖掉,这样就达到了清除了操作,不能用cleardevice
setcolor(BLACK);
setfillcolor(BLACK);
fillcircle(100, y, 25);
}
setcolor(GREEN);//以下是使小球反弹的方法
setfillcolor(BLUE);
fillcircle(ball_x, ball_y, radius);
Sleep(5);
FlushBatchDraw();
setcolor(BLACK);
setfillcolor(BLACK);
fillcircle(ball_x, ball_y, radius);
ball_x += ball_vx;
ball_y += ball_vy;
if (ball_x <= radius || ball_x >= Width - radius)
ball_vx = -ball_vx;
if (ball_y <= radius || ball_y >= Height - radius)
ball_vy = -ball_vy;
mciSendString
void change()
{
HWND hnd = GetHWnd();//获取窗口句柄
SetWindowText(hnd, "神奇窗口");//设置窗口标题
//弹出窗口,提示用户操作
int isok = MessageBox(hnd, "恭喜","提示",MB_OKCANCEL);
if (isok = IDOK)
{
printf("点击 ok");
}
else if (IDCANCEL == isok) {
printf("你点击了取消");
}
}
# pragma comment(lib, "winmm.lib")//传音乐文件必备
void BGM()//传入音乐文件
{
mciSendString("open./hhh allas BGM", 0, 0, 0);
mciSendString("play BGM repeat", 0, 0, 0);
if (0)
{
mciSendString("close BGM", 0, 0, 0);
}
}
ExMessage msg;
int x1 = 55; int y1 = 66;
while (1)//第一种移动物体的方法
{
cleardevice();
setfillcolor(RED);
fillcircle(x1, y1, 20);
FlushBatchDraw();
/*/if (_kbhit())//有键盘就返回true
{
/*/char key = _getch();
printf("%d %c\n", key, key);
switch (key)
{
case'w':y1 -= 50;
printf("上建\n");
break;
case's':y1 += 50;
printf("下建\n");
break;
case'a':x1 -= 50;
printf("左建\n");
break;
case'd':x1 += 50;
printf("右建\n");
break;
}
}
//第二种移动物体的方法
if (GetAsyncKeyState(VK_UP))//上建
{
y1 -= 50;
}
if (GetAsyncKeyState(VK_DOWN))//下建
{
y1 += 50;
}
if (GetAsyncKeyState(VK_LEFT))//左建
{
x1 -= 50;
}
if (GetAsyncKeyState(VK_RIGHT))//右建
{
x1 += 50;
}
//第二种方法的衍生版
// int v = 1;//定义速度v
setfillcolor(BLUE);//设置小球颜色
fillcircle(x, y, 10);//设置小球大小位置
FlushBatchDraw();//结束批量绘制
if (GetAsyncKeyState(VK_UP))//上移
y -= v;
if (GetAsyncKeyState(VK_DOWN))//下移
y += v;
if (GetAsyncKeyState(VK_LEFT))//左移
x -= v;
if (GetAsyncKeyState(VK_RIGHT))//右移
x += v;
//点击按钮就打印坐标
void button(int x, int y, int w, int h, const char* text)
{
setbkcolor(WHITE);
cleardevice();
setbkmode(TRANSPARENT);
setfillcolor(BLUE);
fillroundrect(x, y, x + w, y + h, 10, 10);
settextstyle(30, 0, "黑体");
char ch[50] = "button";
int tx = x + (w - textwidth(text)) / 2;
int ty = y + (h - textheight(text)) / 2;
outtextxy(tx, ty, "text");
}
if (peekmessage(&msg, EM_MOUSE))
{
switch (msg.message)
{
case WM_LBUTTONDOWN:
if (msg.x >= 50 && msg.x <= 200 && msg.y >= 50 && msg.y <= 100)
{
printf("我是按钮,我被点击了\n");
printf("坐标(%d,%d)\n", msg.x, msg.y);
}break;
default:
break;
}
}
}
实际前几天贪吃蛇游戏开始界面已成功案例:
initgraph(840, 800, EW_SHOWCONSOLE);
setbkcolor(RED);
cleardevice();
//要在设置的字体前面加L
settextstyle(15, 0, "楷体");//设置文字样式,大小,字体
fillrectangle(200, 100, 600, 200);
settextcolor(RGB(173, 0, 13));
setbkmode(TRANSPARENT);
char arr[] = "欢迎来到贪吃蛇游戏,按q开始游戏哦";
int width = 400 / 2 - textwidth(arr) / 2;
int height = 100 / 2 - textheight(arr) / 2;
outtextxy(width + 200, height + 100, arr);
settextstyle(15, 0, "楷体");//设置文字样式,大小,字体
fillrectangle(200, 400, 600, 600);
settextcolor(RGB(173, 0, 13));
setbkmode(TRANSPARENT);
char arr1[] = "方向盘移动,F1加速,F2减速";
int width1 = 50 / 2 - textwidth(arr1) / 2;
int height1 = 200 / 2 - textheight(arr1) / 2;
outtextxy(width1 + 400, height1 + 400, arr1);
//ExMessage msg;
int x1 = 100; int y1 = 100;
while (1)//第一种移动物体的方法
{
FlushBatchDraw();
if (_kbhit())//有键盘就返回true
{
char key = _getch();
switch (key)
{
case'w':y1 -= 50;
printf("上建\n");
break;
case's':y1 += 50;
printf("下建\n");
break;
case'a':x1 -= 50;
printf("左建\n");
break;
case'd':x1 += 50;
printf("右建\n");
break;
}
}
}
本贴为博主亲手整理。如有错误,请评论区指出,一起进步。谢谢大家的浏览。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。