Re: Помогите разобраться
От: Fwiffo Россия  
Дата: 24.07.08 17:22
Оценка: 3 (1)
Здравствуйте, 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 его сама уже вызвала к этому моменту.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.