鱼C论坛

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

绘制图片到窗口

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

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

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

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


class button
{
public:
        int x;
        int y;
        int width;
        int height;
        COLORREF color;
        char* pStr;
        static button* pButton;
};

//创建按钮
button* createButton(int x/*X位置*/, int y/*Y位置*/, int width/*宽*/, int height/*长*/, COLORREF color/*背景色*/, const char* text/*按钮标题*/)
{
        button* pButton = new button;
        pButton->x = x;
        pButton->y = y;
        pButton->width = width;
        pButton->height = height;
        pButton->color = color;
        pButton->pStr = (char*)malloc(strlen(text) + 1);
        strcpy(pButton->pStr, text);
        return pButton;
}

//释放按钮
void releasebutton(button* pb)
{
        button* Temp = pb;
        pb = NULL;
        delete Temp;
}

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

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


//判断鼠标是否在按钮内
bool mouseInButton(struct button* pb/*按钮*/, MOUSEMSG m/*鼠标*/)
{
        if ((pb->x <= m.x) && (m.x <= pb->x + pb->width))
        {
                if ((pb->y <= m.y) && (m.y <= pb->y + pb->height))
                {
                        pb->color = RED;//设置背景为红色
                                return true;
                }
        }
        pb->color = YELLOW; //设置字体为黄色
                return false;
}

//是否点击按钮
void clickButton(button* pb, MOUSEMSG mouse)
{
        if (mouseInButton(pb, mouse) && mouse.uMsg == WM_LBUTTONDOWN)
        {
                MessageBox(NULL, _T("左键按下"), _T("触发"), MB_SYSTEMMODAL);
        }
        else if (mouseInButton(pb, mouse) && mouse.uMsg == WM_RBUTTONDOWN)
        {
                MessageBox(NULL, _T("右键按下"), _T("触发"), MB_SYSTEMMODAL);
        }
}

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

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

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

        while (true)
        {
                BeginBatchDraw();
                putimage(50, 10, &img);   //显示图片
                //显示按钮
                drawButton(pb);
                drawButton(pb2);
                drawButton(pb3);
                drawButton(pb4);

                

                MOUSEMSG m = GetMouseMsg();
                if (mouseInButton(pb, m))
                {
                        clickButton(pb, m);
                }
                else if (mouseInButton(pb2, m))
                {
                        clickButton(pb2, m);
                }
                else if (mouseInButton(pb3, m))
                {
                        clickButton(pb3, m);

                }
                else if (mouseInButton(pb4, m))
                {
                        clickButton(pb4, m);
                }
                EndBatchDraw();

        }
        releasebutton(pb);
        releasebutton(pb2);
        releasebutton(pb3);
        releasebutton(pb4);
        closegraph();
}
1}8452RB(2MF823FM]1G9QU.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-25 07:44:02 | 显示全部楼层
void clickButton(button* pb, MOUSEMSG mouse)
{
        if (mouseInButton(pb, mouse) && mouse.uMsg == WM_LBUTTONDOWN)
        {
                MessageBox(NULL, _T("左键按下"), _T("触发"), MB_SYSTEMMODAL);/////////////////////这里调用想调用的函数不就行了吗?要什么消息过二遍手?
        }
        else if (mouseInButton(pb, mouse) && mouse.uMsg == WM_RBUTTONDOWN)
        {
                MessageBox(NULL, _T("右键按下"), _T("触发"), MB_SYSTEMMODAL);
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这种简单的,只是随便写写,没想太多,我想在自己new出来的窗口上进行绘制
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 13:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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