Image Printing
-
I am trying to print a bmp image in MFC. I have tried creating a memory DC (compatible with the printer) and using BitBlt but it doesn't work for a printer DC. I have also tried CreateCompatibleBitmap which may work but how do I get the image into the newly created bmp. I tried using SetBitmapBits but no success. Obviously there is more preparations to do for this to work. Anyone done this before?
-
I am trying to print a bmp image in MFC. I have tried creating a memory DC (compatible with the printer) and using BitBlt but it doesn't work for a printer DC. I have also tried CreateCompatibleBitmap which may work but how do I get the image into the newly created bmp. I tried using SetBitmapBits but no success. Obviously there is more preparations to do for this to work. Anyone done this before?
In your CView-derived class's OnDraw:
CBitmap bmp;
if (bmp.LoadBitmap(IDB_BITMAP1))
{
// Get the size of the bitmap
BITMAP bmpInfo;
bmp.GetBitmap(&bmpInfo);// Create an in-memory DC compatible with the // display DC we're using to paint CDC dcMemory; dcMemory.CreateCompatibleDC(pDC); // Select the bitmap into the in-memory DC CBitmap\* pOldBitmap = dcMemory.SelectObject(&bmp); // Find a centerpoint for the bitmap in the client area CRect rect; GetClientRect(&rect); int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2; int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2; // Copy the bits from the in-memory DC into the on- // screen DC to actually do the painting. Use the centerpoint // we computed for the target offset. pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory, 0, 0, SRCCOPY); dcMemory.SelectObject(pOldBitmap);
}