鱼C论坛

 找回密码
 立即注册
查看: 3431|回复: 1

如何用loadimage这个函数加载一张图片?各位大神有没有参照的代码,麻烦发一下呗,...

[复制链接]
发表于 2018-4-2 10:30:36 | 显示全部楼层 |阅读模式

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

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

x
越简单越好哟,好人一生平安
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-4 16:48:06 | 显示全部楼层
#include <windows.h>
 
//函数声明
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);//窗口处理函数
void init();//初始化设备环境
void Render();//渲染函数
void CleanUp();//释放设备环境
 
//变量定义
HWND hwnd;
HDC hdc,hdcmen;
BITMAP bm;
HBITMAP hbm;
 
 
//主函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)
{
        //设计窗口类
        WNDCLASS wndclass = {
                CS_HREDRAW | CS_VREDRAW,
                WndProc,
                0,
                0,
                hInstance,
                LoadIcon(NULL, IDI_APPLICATION),
                LoadCursor(NULL, IDC_ARROW),
                (HBRUSH)GetStockObject(WHITE_BRUSH),
                NULL,
                TEXT("MYDEMO")
        };
        //注册窗口类
        RegisterClass(&wndclass);
        //创建窗口类
        hwnd = CreateWindow(
                TEXT("MYDEMO"),
                TEXT("MyDemo"),
                WS_OVERLAPPEDWINDOW,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                NULL,
                NULL,
                hInstance,
                NULL);
        //显示窗口
        ShowWindow(hwnd, nCmdShow);
        //更新窗口
        UpdateWindow(hwnd);
 
        //初始化
        init();
 
        //消息循环
        MSG Msg;
        BOOL bRet;
        PeekMessage(&Msg, NULL, 0, 0, PM_NOREMOVE);
        while (Msg.message != WM_QUIT)
        {
                bRet = PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE);
                if (bRet)
                {
                        TranslateMessage(&Msg);
                        DispatchMessage(&Msg);
                }
                Render();
        }
        CleanUp();
 
        return Msg.wParam;
}
 
 
//窗口过程处理函数
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        switch (message)
        {
        case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
        }
 
        return DefWindowProc(hwnd, message, wParam, lParam);
}
//初始化函数
void init()
{
        if (!hwnd)
        {
                return;
        }
        //设备环境获取
        hdc = GetDC(hwnd);
        //获取兼容设备环境
        hdcmen = CreateCompatibleDC(hdc);
        //加载位图
        hbm = (HBITMAP)LoadImage(
                NULL,
                L"flower.bmp",
                IMAGE_BITMAP,
                0,
                0,
                LR_LOADFROMFILE);
        //将位图选入设备环境
        SelectObject(hdcmen, hbm);
        //获取位图大小
        GetObject(hbm, sizeof(BITMAP), &bm);
        
}
//渲染
void Render()
{
        if (hdc)
        {
                //正常位图输出
                BitBlt(hdc, 200, 0, bm.bmWidth,bm.bmHeight,hdcmen, 0, 0, SRCCOPY);
 
                //缩放模式设置,一般采用COLORONCOLOR该模式来处理彩色点阵图
                SetStretchBltMode(hdc, COLORONCOLOR);
                //位图缩放输出
                /************************************************
                这里在设备环境中从(0,0)坐标并以宽为200,高为 200输出该位图,
                而该位图是从后备设备环境hdcmen中从(0,0)坐标开始,宽高为该位图大小的位图截取出来
                从而实现缩放显示
                *************************************************/
                StretchBlt(hdc, 0, 0, 200, 200, hdcmen, 0, 0, bm.bmWidth,bm.bmHeight, SRCCOPY);
 
 
        }
}
//清除设备环境
void CleanUp()
{
        //清除位图相关
        DeleteObject(hbm);
        DeleteDC(hdcmen);
        ReleaseDC(hwnd, hdc);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-2 08:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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