Здравствуйте, Andruxa-1, Вы писали:
A1>Создаю класс, в нем я хочу вывести битмап, он выводится, но верх ногами и на некотором растоянии. Я понимаю, что тут проблема с преобразованием, но не могу найти свою ошибку.
Это потому что ось y в pDC и memDC направлена в разные стороны. SetMapMode(MM_LOMETRIC) помимо единиц измерения еще и ориентацию меняет. Можно так сделать:
pDC->StretchBlt( rect.left, rect.top, bmInf.bmWidth, -bmInf.bmHeight,
&MemDC, 0, 0, bmInf.bmWidth, bmInf.bmHeight, SRCCOPY );
Ну и еще
A1>A1>void CInventoryView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
...
pDC->SetMapMode(MM_LOMETRIC);
pDC->SetViewportExt(rect.right, -rect.bottom);
A1>
SetViewportExt() при заданном MM_LOMETRIC ничего не делает.
A1>A1>void CInventoryView::OnDraw(CDC* pDC)
A1>{
A1> // TODO: add draw code for native data here
A1> OnPrepareDC(pDC);
A1>
OnPrepareDC() нельзя вызывать из OnDraw. MFC его сама уже вызвала к этому моменту.