어떻게 CDC에서 CBitmap으로 이미지를 전송할 수 있습니까? 전체적으로 문제 : 커다란 이미지를 CBitmap A.에 저장했습니다.이 이미지의 일부를 벡터로 저장하기위한 CBitmap의 번호로 전송해야합니다. 왜냐하면이 때문에 많은 수의 CDC를 사용할 수 없기 때문입니다. :) 주기에 준비된 CDC를 만들고 (CBitmap A의 필수 부분을 얻습니다) CBitmap x로 전송해야합니다. 어떻게해야합니까? 나는 원본 사진을CDC에서 CBitmap으로 이미지 전송
for (int x=100; x>=0; x-=100)
for (int y=100; y>=0; y-=100)
{
CBitmap *destBitmap = new CBitmap();
destBitmap->CreateCompatibleBitmap(&destDC, 100, 100);
CBitmap *oldBitmap = destDC.SelectObject(destBitmap);
destDC.BitBlt(0,0,100,100,&SourceDC,x,y,SRCCOPY);
pMainDC->BitBlt(x*1.1,y*1.1,100,100,&destDC,0,0,SRCCOPY);
있어 // 내가 여기에 검은 색 사각형을 가지고 -
m_bitmaps.clear();
m_bitmaps.reserve(4);
CDC SourceDC, destDC;
SourceDC.CreateCompatibleDC(pMainDC);
destDC.CreateCompatibleDC(pMainDC);
CBitmap bmpWhole; // bmp 200*200
bmpWhole.LoadBitmap(IDB_TEST_BITMAP);
SourceDC.SelectObject(&bmpWhole);
//pMainDC->BitBlt(0,0,200,200,&SourceDC,0,0,SRCCOPY);
가 // 괜찮아요 :
여기 내 코드입니다! - 앞의 코드에 뭔가 문제
m_bitmaps.push_back(destBitmap);
destDC.SelectObject(oldBitmap);
}
bmpWhole.DeleteObject();
destDC.DeleteDC();
SourceDC.DeleteDC();
// 그리고 나중에 CBitmaps 검은 색 사각형
나는 해결책을 찾을 수 있습니다!
벡터
을 CBitmap 구문 분석 및 초기화m_bitmaps.clear();
m_bitmaps.reserve(4);
CDC SourceDC, destDC;
SourceDC.CreateCompatibleDC(pMainDC);
CBitmap bmpWhole;
bmpWhole.LoadBitmap(IDB_TEST_BITMAP);
SourceDC.SelectObject(&bmpWhole);
for (int x=100; x>=0; x-=100)
for (int y=100; y>=0; y-=100)
{
CImage *destImage = new CImage();
destImage->Create(100, 100, 24);
destDC.Attach(destImage->GetDC());
destDC.BitBlt(0,0,100,100,&SourceDC,x,y,SRCCOPY);
destDC.Detach();
destImage->ReleaseDC();
m_bitmaps.push_back(destImage);
}
bmpWhole.DeleteObject();
destDC.DeleteDC();
SourceDC.DeleteDC();
그리기 :
WORD nShift=0;
for (auto iter = m_bitmaps.begin(); iter != m_bitmaps.end(); ++iter, nShift+=110)
{
CBitmap* pBitmap = CBitmap::FromHandle((*iter)->operator HBITMAP());
CDC memDC;
memDC.CreateCompatibleDC(pMainDC);
memDC.SelectObject(pBitmap);
pMainDC->BitBlt(nShift, 0, 100, 100, &memDC, 0, 0, SRCCOPY);
}
무엇을 시도 했습니까? CBitmap 개체를 장치 컨텍스트로 선택 했습니까? – 0x499602D2
첫 번째 게시물에 코드를 적어 두었습니다. – Seer