VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 606|回复: 2

请教一个简单问题

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-24 08:40:01 | 显示全部楼层 |阅读模式
我在剪贴板中有一个位图,想把它缩小到1/5大小(即把位图拷到VC程序中,再对HBitmap进行操做,缩小之后再拷回剪贴板中,请问怎么实现?
回复

使用道具 举报

0

主题

24

帖子

19.00

积分

新手上路

Rank: 1

积分
19.00
发表于 2020-2-9 16:30:01 | 显示全部楼层
GetClipboardData=>Bitmap process=>SetClipboardData
回复

使用道具 举报

0

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-29 10:00:01 | 显示全部楼层
        HBITMAP hBitmap = NULL;
        if(OpenClipboard())
        {
                hBitmap = (HBITMAP)GetClipboardData(CF_BITMAP);               
                if(hBitmap)
                {
                        CDC* pdc = GetDC();
                        CBitmap* pCBmp = new CBitmap;
                        pCBmp->Attach(hBitmap);
                        BITMAP bm;
                        pCBmp->GetBitmap(&bm);
                        CDC dcCompatible;
                        dcCompatible.CreateCompatibleDC(pdc);
                        dcCompatible.SelectObject(pCBmp);
                        CDC dcMemDC;
                        dcMemDC.CreateCompatibleDC(pdc);
                        dcMemDC.SetStretchBltMode(COLORONCOLOR);
                        dcMemDC.SelectObject(pCBmp);
                        BOOL bBitblt = dcMemDC.StretchBlt(0,0,bm.bmWidth,bm.bmHeight,&dcCompatible,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
                        DWORD dwErrorCode = GetLastError();
                        hBitmap = CreateCompatibleBitmap(dcMemDC.m_hDC, bm.bmWidth/5, bm.bmHeight/5);
                         pCBmp->Detach();
                         pCBmp->Attach(hBitmap);
                         pCBmp->GetBitmap(&bm);
                        EmptyClipboard();
                        HANDLE hTemp = SetClipboardData(CF_BITMAP, hBitmap);
                        delete pCBmp;
                }
                CloseClipboard();               
        }
       
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

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