将CBitmap分割成两个CBitmap

/

pDC->SetBrushOrg(110, 150)  不设置画刷起点的话,画刷是针对整个dc平铺画图的。

/


void CDrawItemDlg::GetPartTwoBitmap(CDC& srcDC , CBitmap& srcBimap, CBitmap& desBitmap1, CBitmap& desBitmap2, int splitPos)

{
int width = 0, height = 0;

//先获取源位图的基本信息
BITMAP bm;
srcBimap.GetBitmap(&bm);
width = bm.bmWidth;

height = bm.bmHeight;


if (splitPos < 0 || splitPos>width)
{
return;
}

//根据分割点先分离出前半部分的图片
CDC memDC;
memDC.CreateCompatibleDC(NULL);
desBitmap1.CreateCompatibleBitmap(&memDC, splitPos, height);
memDC.SelectObject(desBitmap1);
memDC.BitBlt(0, 0, splitPos, height, &srcDC , 0, 0, SRCCOPY);

//分离后半部分图片
desBitmap2.CreateCompatibleBitmap(&memDC, width - splitPos, height);
memDC.SelectObject(desBitmap2);

memDC.BitBlt(0, 0, width - splitPos, height, &srcDC, splitPos, 0, SRCCOPY);


memDC.DeleteDC();

}


void CDrawItemDlg::DrawBitmap()
{
CRect rect;
GetClientRect(&rect);
CDC* pDC = GetDC();


CBitmap bitmap, desBitmap, desBitmap1;
CDC memDC;
memDC.CreateCompatibleDC(pDC);
bitmap.CreateCompatibleBitmap(&memDC, 100, 50);
memDC.SelectObject(bitmap);
memDC.FillSolidRect(0, 0, rect.Width() + 300, rect.Height(),
RGB(220, 220, 220));
memDC.DrawText(L"123456789AB", CRect(0, 0, 100, 50), DT_CENTER);




/保存文件
BITMAP bm;
bitmap.GetBitmap(&bm);
HBITMAP hBitmap = (HBITMAP)SelectObject(memDC, bitmap);
CImage image;
image.Attach(hBitmap);
image.Save(L"e:\\b.BMP");
image.Detach();


/将CBitmap分成两份
GetPartTwoBitmap(memDC, bitmap, desBitmap, desBitmap1, 50);


CBrush brush(&desBitmap);
pDC->SelectObject(brush);
pDC->Rectangle(CRect(0, 0, 50, 50));


CBrush brush1(&desBitmap1);
pDC->SelectObject(brush1);
pDC->Rectangle(CRect(100, 100, 150, 150));

pDC->SetBrushOrg(110, 150); //设置画刷起点
pDC->Rectangle(CRect(110, 150, 160, 200));


ReleaseDC(pDC);
memDC.DeleteDC();
bitmap.DeleteObject();
desBitmap.DeleteObject();
desBitmap1.DeleteObject();
brush.DeleteObject();
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值