//解决字符集的问题
#ifdef UNICODE
#undef UNICODE
#endif
#include<stdio.h>
#include<stdlib.h>
#include<easyx.h> //只有最新的API
//#include<graphics.h>//包含过时的API
//多媒体设备控制接口
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")
//绘制图形
void drawShape()
{
//设置线条颜色
setlinecolor(GREEN);
//设置线条样式(粗细)
setlinestyle(PS_SOLID,3);
//设置填充颜色
setfillcolor(RGB(176, 170, 0));
//空心圆
circle(50, 50, 50);
//填充圆
fillcircle(50,150,50);
//实心圆
solidcircle(50, 250, 50);
//绘制一条线
line(0, 0, 640, 480);
line(0, 0, getwidth(), getheight()); //获取窗口宽度,高度
//画点
for (int i = 0; i < 20; i++)
{
COLORREF c = RGB(rand() % 256, rand() % 256, rand() % 256);
for (int k = 0; k < getwidth(); k++)
{
putpixel(i, k, YELLOW);
}
}
//颜色渐变
for (INT i = 0; i < 640 ; i++)
{
//setlinecolor(RGB(0,255 - ((i % 2 == 0) ? ++i : i),0));
setlinecolor(RGB(0, 255 - i/2, 0));
line(0, i, getwidth(), i);
}
//circle圆形 ellipse椭圆 pie扇形 polygon多边形
//rectangle矩形 roundrect圆角矩形 line线 putpixel画点
}
//绘制文本
void drawText()
{
printf("hello world"); //黑窗口显示
//文本样式
settextstyle(36, 0, "黑体");
outtextxy(100,100,"A");
//设置背景模式
setbkmode(TRANSPARENT);//透明
outtextxy(200, 100, "A");
//设置文字颜色
settextcolor(BROWN);//棕色
setbkmode(TRANSPARENT);//透明
outtextxy(300, 100, "A");
// 错误 C2665 “settextstyle” : 4 个重载中没有一个可以转换所有参数类型
//原因:字符集不对,需要UNICODE字符
//解决方案4中:
//1,在字符串的前面加一个大写的L,对字符串进行转换 L"黑体"
//2. 用_T或_TEXT带参宏函数,把字符串包起来 _T("hello") or _TEXT("hello")
//3. 菜单-项目-属性-高级-字符集-unicode改为多字节字符集(推荐使用和第4条)
//4.在第3条无效的情况下使用,条件编译,需要加载第一行
// #ifdef UNICODE
// #undef UNICODE
// #endif
}
//给定一个矩形,让文字居中显示
void centerText()
{
//绘制矩形
setfillcolor(RED);
setfillcolor(YELLOW);
fillrectangle(250, 250, 250+250,250+50);
char str[] = "shixiaobin";
int hspace=(250 - textwidth(str))/2;
int vspace = (50 - textheight(str)) / 2;
//绘制文字
outtextxy(250+hspace,250+vspace,str);
}
//绘制图片,不支持透明贴图
void drawImage()
{
//定义一个图片变量
IMAGE img;
//加载图片到指定的变量
//相对路径:相对当前项目目录 ./assets/images/nn.gif
loadimage(&img, "./目录/1.jpg", getwidth(), getheight());
loadimage(&img,"1.jpg",getwidth(),getheight());
//绝对路径:带盘符的
//loadimage(&img, "c:\\user\\deskktop\\1.jpg", getwidth(), getheight());
//loadimage(&img, "c:/user/deskktop/1.jpg", getwidth(), getheight());
//输出图片
putimage(0, 0, &img);
//透明贴图 不支持png透明贴图
IMAGE img_png;
loadimage(&img, "1.png",getwidth(), getheight());
putimage(0, 0, &img_png);
//硬要透明贴图 两张图 一张掩码图(白底,黑白图片),一张原图(黑底)
IMAGE imgs[2];
loadimage(&imgs[0], "1.jpg");
loadimage(&imgs[1], "1.jpg");
putimage(0,0,&imgs[0],SRCAND);//掩码图
putimage(0,0,&imgs[1],SRCPAINT);//原图
//drawImage(0, 0, &imgs);//自定义函数
}
//消息处理
void handingMsg()
{
//定义一个消息变量
ExMessage msg;
//获取消息
while (peekmessage(&msg, EM_MOUSE|EM_KEY)) //鼠标消息 键盘消息
{
switch (msg.message)
{
case WM_LBUTTONDOWN:
printf("左键按下\n");
break;
case WM_LBUTTONUP:
printf("右键弹起\n");
break;
case WM_MOUSEMOVE:
printf("鼠标移动\n");
break;
case WM_KEYDOWN:
switch (msg.vkcode)
{
case VK_UP://上
break;
case VK_DOWN:
break;
case VK_LEFT:
break;
case VK_RIGHT:
break;
/*case "A":
break;*/
default:
printf("other %c %d", msg.vkcode, msg.vkcode);
break;
}
break;
default:
break;
}
printf("%d\n", msg.message);//消息的类型
}
}
//播放音乐
void playMusic()
{
//播放音乐需要头文件mmsystem.h,库文件winmm.lib
//mciSendString mci media contorl interface 多媒体控制接口
mciSendString("open ./sound/1.mp3 alias bgm", NULL, 0, NULL); //alias 别名
//mciSendString("play ./sound/1.mp3 alias bgm", NULL, 0, NULL);
mciSendString("play bgm repeat", NULL, 0, NULL);//repeat 重复循环播放
getchar();
//关闭音乐
mciSendString("close bgm", NULL, 0, NULL);
}
int main()
{
//创建窗口+
//initgraph(640, 480);
initgraph(640, 480,EW_SHOWCONSOLE); //EW easyx windows 显示黑窗口
//设置背景颜色
setbkcolor(RED); //红色RED 绿色GREEN f12 或 右键转定义 可以查看所有颜色
//setbkcolor(RGB(240, 240, 240));//QQ截图ctrl+alt+a 选中颜色按C
cleardevice();//清屏幕 用设置的颜色填充整个屏幕
//3中图形:1无填充 2有填充 3无边框填充
//修改窗口标题
//HWND hWnd = GetHWnd();//获取窗口句柄
//SetWindowText(hWnd, "love"); //设置窗口标题
SetWindowText(GetHWnd(),"12345"); //获取句柄,设置窗口标题
//消息框
int ret=MessageBox(GetHWnd(), "你好吗", "标题", MB_OKCANCEL);
//弹出对话框
//在某些时候,可能需要弹出一个小窗口提示用户,windows给我们提供了一个** MessageBox** 函数。
//int MessageBox( //返回按下的键的值
// HWND hWnd, //窗口句柄
// LPCSTR text, //显示的文字
// LPCSTR caption, //对话框标题
// UINT uType //对话框按钮类型
//);
if (ret == IDOK)
{
printf("IDOK\n");
}
else if (ret == IDCANCEL)
{
printf("IDCANEL\n");
}
/*drawShape();
drawText();
centerText();
drawImage();
playMusic();*/
while (true)
{
handingMsg();
}
getchar(); //等待输入一个字符,如果没有输入就一直等待
closegraph();//关闭图形窗口
return 0;
}
android shape画圆环套实心圆 easyx画实心圆
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
有趣的CSS - 弹跳的圆
用css写一个好玩的不停弹跳变形的圆。
css 弹跳的圆 动效 动画 交互 -
有趣的CSS - 加载的圆
由4个圆组成的一个小清新的动态加载动画效果。
css 加载动画 loading 圆点加载 ux