请问如何剪切CDC中选进的位图?

hw110 2003-08-30 10:30:07
我当前的DC中选入了一幅图,我想剪切它中间的一块,然后用另外的图片来代替这一块,该如何做呢?谢谢
...全文
54 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hw110 2003-09-01
  • 打赏
  • 举报
回复
已经搞定了,不过好像没有那么复杂,我在最开始选入位图后将其保留到一个内存DC中,然后搽除的时候从这个内存DC中截取相应位置,复制到当前的DC中
CPoint pt_Start;
if ((point.x-10)>=0)
{
pt_Start.x = point.x-10;
}
else
{
pt_Start.x = 0;
}
if ((point.y-10)>=0)
{
pt_Start.y = point.y-10;
}
else
{
pt_Start = 0;
}

m_pCurDC->BitBlt(pt_Start.x,pt_Start.y,20,20,&Memdc,pt_Start.x,pt_Start.y,SRCCOPY);
m_nMemDC.BitBlt(pt_Start.x,pt_Start.y,20,20,&Memdc,pt_Start.x,pt_Start.y,SRCCOPY);
wuchuncai 2003-09-01
  • 打赏
  • 举报
回复
再生成一MemDC,选入另一图片,然后用BitBlt拷贝到你想的位置即可
daylight1980 2003-09-01
  • 打赏
  • 举报
回复
CBitmap bm;
CBitmap *pOld;
int Width,Height;
CDC tdc;
BITMAP btm;
DWORD size;
CDC dc;

RECT Rect;

dc.CreateDC("DISPLAY",NULL,NULL,NULL);

Width=Rect.right-Rect.left;
Height=Rect.bottom-Rect.top;

bm.CreateCompatibleBitmap(&dc,Width,Height);

tdc.CreateCompatibleDC(&dc);
pOld=tdc.SelectObject(&bm);

tdc.BitBlt( 0 , 0 , Width, Height, &dc, Rect.left , Rect.top , SRCCOPY);
//BOOL BitBlt(int x,int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, DWORD dwRop );

tdc.SelectObject(pOld);
bm.GetBitmap(&btm);
size=btm.bmWidthBytes*btm.bmHeight;
LPSTR lpData=(LPSTR)GlobalAllocPtr(GPTR,size);

/////////////////////////////////////////////
BITMAPINFOHEADER bih;
bih.biBitCount=btm.bmBitsPixel;
bih.biClrImportant=0;
bih.biClrUsed=0;
bih.biCompression=0;
bih.biHeight=btm.bmHeight;
bih.biPlanes=1;
bih.biSize=sizeof(BITMAPINFOHEADER);
bih.biSizeImage=size;
bih.biWidth=btm.bmWidth;
bih.biXPelsPerMeter=0;
bih.biYPelsPerMeter=0;
///////////////////////////////////

GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);



if (OpenClipboard()) //hWnd为程序窗口句柄
{
//清空剪贴板
EmptyClipboard();
//把屏幕内容粘贴到剪贴板上,bm为刚才的屏幕位图句柄
SetClipboardData(CF_BITMAP, bm);
//关闭剪贴板
CloseClipboard();

}

这可以剪掉想要的一块。并贴制剪贴板
hw110 2003-09-01
  • 打赏
  • 举报
回复
不会没有人知道吧?大家帮帮忙呀,分不够继续加

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧