首页 > 分享 > 位图操作与GDI对象管理

位图操作与GDI对象管理

CMemDC的功能:

最新推荐文章于 2021-03-08 16:43:36 发布

qiukapi 于 2018-10-29 20:39:58 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

a)通过资源ID加载进程内位图:BOOL LoadBitmap(UINT nBitmap, CDC* pDC = NULL);
B)通过文件名加载进程外位图:BOOL LoadBitmap(LPCSTR szFile, CDC* pDC = NULL);
C)在构造对象时加载进程内位图:CMemDC(UINT nBitmap, CDC* pDC = NULL);
D)在构造对象时加载进程外位图:CMemDC(LPCSTR szFile, CDC* pDC = NULL);
E)获取位图信息:int GetWidth();和int GetHeigth();
F)摧毁时检查和处理GDI泄露问题(在析构函数中调用):BOOL DeleteDC();
G)创建一个指定高宽的空白位图:BOOL Create(int cx, int cy, CDC* pDC = NULL);

#pragma once


class My_CMemDC : public CDC
{
    CSize m_size;
public:
    My_CMemDC()
    {
        m_size.cx = m_size.cy = 0;
    }
    My_CMemDC(UINT nBitmap, CDC * pDC = NULL)
    {
        LoadBitmap(nBitmap, pDC);
    }
    My_CMemDC(CString szFile, CDC *pDC = NULL)
    {
        LoadBitmap(szFile, pDC );
    }
    ~My_CMemDC()
    {
        DeleteDC();
    }
    int GetWidth(){ return m_size.cx; }
    int GetHeight(){ return m_size.cy; }
    BOOL DeleteDC()
    {
        if (!GetSafeHdc())
            return FALSE;
        CBitmap *pBitmap = GetCurrentBitmap();
        if (pBitmap)
            pBitmap->DeleteObject();
        return CDC::DeleteDC();
    }
    BOOL Create(int cx, int cy, CDC* pDC = NULL)
    {//创建空白位图
        CBitmap bmp;
        bmp.CreateCompatibleBitmap(pDC, cx, cy);
        CreateCompatibleDC(pDC);
        SelectObject(&bmp);
        return TRUE;
    }
    BOOL LoadBitmap(UINT nBitmap, CDC * pDC = NULL)
    {
        CBitmap bmp;
        if (!bmp.LoadBitmap(nBitmap))
            return FALSE;
        BITMAP bm;
        bmp.GetBitmap(&bm);
        m_size.cx = bm.bmWidth;
        m_size.cy = bm.bmHeight;
        CreateCompatibleDC(pDC);
        SelectObject(&bmp);
        return TRUE;
    }
    BOOL LoadBitmap(CString szFile, CDC *pDC = NULL)
    {
        HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, szFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
        if (!hBitmap)
            return FALSE;
        //CBitmap *pBitmap = CBitmap::FromHandle(hBitmap);
        BITMAP bm;
        //pBitmap->GetBitmap(&bm);
        GetObject(hBitmap, sizeof(bm), &bm);
        m_size.cx = bm.bmWidth;
        m_size.cy = bm.bmHeight;
        CreateCompatibleDC(pDC);
        SelectObject(hBitmap);
        return TRUE;
    }
};

相关知识

易语言宠物店管理系统源码
宠物店管理台账,佳易王宠物医院电子处方管理系统操作教程
宠物商店管理系统功能详解与操作指南
宠物店管理系统哪里有宠物疫苗记录系统教程,佳易王宠物医院疫苗预约记录操作教程
软件应用实例,宠物医院处方笺模板实例,佳易王兽医电子处方开单管理系统软件操作教程
宠物医院药品台账,宠物店宠物处方单怎么写,佳易王宠物动物电子处方管理系统操作教程
Python面向对象与模块化:构建宠物管理系统的实战案例
2024亚洲宠物展【全馆展位图】发布
宠物处方单子怎么开,宠物门诊处方管理软件教程
14天Java基础学习——第6天:面向对象编程(类与对象)

网址: 位图操作与GDI对象管理 https://m.mcbbbk.com/newsview822405.html

所属分类:萌宠日常
上一篇: 佛弟子可以养宠物吗
下一篇: 【宠物行业招聘学徒】宠物行业招聘