鱼C论坛

 找回密码
 立即注册
查看: 1957|回复: 2

绘制图片到窗口

[复制链接]
发表于 2022-9-24 23:30:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
ALT如何制作自定义控件?
不知道怎么绘制图片到自己new出来的窗口上....只会这种,感觉没啥用,连消息循环机制都没有。。。

  1. #include<graphics.h> //图形界面


  2. class button
  3. {
  4. public:
  5.         int x;
  6.         int y;
  7.         int width;
  8.         int height;
  9.         COLORREF color;
  10.         char* pStr;
  11.         static button* pButton;
  12. };

  13. //创建按钮
  14. button* createButton(int x/*X位置*/, int y/*Y位置*/, int width/*宽*/, int height/*长*/, COLORREF color/*背景色*/, const char* text/*按钮标题*/)
  15. {
  16.         button* pButton = new button;
  17.         pButton->x = x;
  18.         pButton->y = y;
  19.         pButton->width = width;
  20.         pButton->height = height;
  21.         pButton->color = color;
  22.         pButton->pStr = (char*)malloc(strlen(text) + 1);
  23.         strcpy(pButton->pStr, text);
  24.         return pButton;
  25. }

  26. //释放按钮
  27. void releasebutton(button* pb)
  28. {
  29.         button* Temp = pb;
  30.         pb = NULL;
  31.         delete Temp;
  32. }

  33. //绘制按钮
  34. void drawButton(struct button* pb)
  35. {
  36.         settextstyle(30, 0, "宋体");  //设置字体
  37.         setfillcolor(pb->color);    //设置颜色
  38.         setlinecolor(BLACK);    //设置矩形边框颜色为黑色
  39.         settextcolor(BLACK);    //设置字体颜色为黑色
  40.         setbkmode(TRANSPARENT); //设置背景为透明

  41.         fillrectangle(pb->x, pb->y, pb->x + pb->width, pb->y + pb->height); //绘制矩形
  42.         outtextxy(pb->x + 25, pb->y + 5, pb->pStr);     //显示字体 位置
  43. }


  44. //判断鼠标是否在按钮内
  45. bool mouseInButton(struct button* pb/*按钮*/, MOUSEMSG m/*鼠标*/)
  46. {
  47.         if ((pb->x <= m.x) && (m.x <= pb->x + pb->width))
  48.         {
  49.                 if ((pb->y <= m.y) && (m.y <= pb->y + pb->height))
  50.                 {
  51.                         pb->color = RED;//设置背景为红色
  52.                                 return true;
  53.                 }
  54.         }
  55.         pb->color = YELLOW; //设置字体为黄色
  56.                 return false;
  57. }

  58. //是否点击按钮
  59. void clickButton(button* pb, MOUSEMSG mouse)
  60. {
  61.         if (mouseInButton(pb, mouse) && mouse.uMsg == WM_LBUTTONDOWN)
  62.         {
  63.                 MessageBox(NULL, _T("左键按下"), _T("触发"), MB_SYSTEMMODAL);
  64.         }
  65.         else if (mouseInButton(pb, mouse) && mouse.uMsg == WM_RBUTTONDOWN)
  66.         {
  67.                 MessageBox(NULL, _T("右键按下"), _T("触发"), MB_SYSTEMMODAL);
  68.         }
  69. }

  70. int main()
  71. {
  72.         HWND win = initgraph(800, 600); //创建窗口

  73.         IMAGE img;
  74.         loadimage(&img, "E:\\img\\psc (1).png", 700, 600);      //加载图片

  75.         button* pb = createButton(300, 200, 200, 40, YELLOW, "好好学习");
  76.         button* pb2 = createButton(300, 250, 200, 40, YELLOW, "天天向上");
  77.         button* pb3 = createButton(300, 300, 200, 40, YELLOW, "羊了个羊");
  78.         button* pb4 = createButton(300, 350, 200, 40, YELLOW, "喵了个咪");

  79.         while (true)
  80.         {
  81.                 BeginBatchDraw();
  82.                 putimage(50, 10, &img);   //显示图片
  83.                 //显示按钮
  84.                 drawButton(pb);
  85.                 drawButton(pb2);
  86.                 drawButton(pb3);
  87.                 drawButton(pb4);

  88.                

  89.                 MOUSEMSG m = GetMouseMsg();
  90.                 if (mouseInButton(pb, m))
  91.                 {
  92.                         clickButton(pb, m);
  93.                 }
  94.                 else if (mouseInButton(pb2, m))
  95.                 {
  96.                         clickButton(pb2, m);
  97.                 }
  98.                 else if (mouseInButton(pb3, m))
  99.                 {
  100.                         clickButton(pb3, m);

  101.                 }
  102.                 else if (mouseInButton(pb4, m))
  103.                 {
  104.                         clickButton(pb4, m);
  105.                 }
  106.                 EndBatchDraw();

  107.         }
  108.         releasebutton(pb);
  109.         releasebutton(pb2);
  110.         releasebutton(pb3);
  111.         releasebutton(pb4);
  112.         closegraph();
  113. }
复制代码

1}8452RB(2MF823FM]1G9QU.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-9-25 07:44:02 | 显示全部楼层
  1. void clickButton(button* pb, MOUSEMSG mouse)
  2. {
  3.         if (mouseInButton(pb, mouse) && mouse.uMsg == WM_LBUTTONDOWN)
  4.         {
  5.                 MessageBox(NULL, _T("左键按下"), _T("触发"), MB_SYSTEMMODAL);/////////////////////这里调用想调用的函数不就行了吗?要什么消息过二遍手?
  6.         }
  7.         else if (mouseInButton(pb, mouse) && mouse.uMsg == WM_RBUTTONDOWN)
  8.         {
  9.                 MessageBox(NULL, _T("右键按下"), _T("触发"), MB_SYSTEMMODAL);
  10.         }
  11. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-1 18:47:46 | 显示全部楼层

这种简单的,只是随便写写,没想太多,我想在自己new出来的窗口上进行绘制
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 21:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表