ls233 Гость
|
Добавлено: Ср Окт 15 2003 23:59 Заголовок сообщения: Как улучшить качество Bitmap? |
|
|
Мне нужно графически отобразить грид (физические координаты ~300x300) на максимально больших, логических, позволяемых дисплеем координатах (600x600 и больших). Для предотвращения мерцания, в начале создается весь "Bitmap" в памяти (по физическому гриду), а затем, используя "BitBlt", графически отображается на максимально больших, логических координатах. Проблема в том, что такое расширение приводит к сильному падению в качестве изображения. Код приложен. Буду благодарен за любую помощь. Герман.
void CRecDrawView::OnDraw(CDC* pDC) { CRect rect ; int X, X1, Y, Y1, MatrixPart, DrawPart;
COLORREF color = RGB( 128, 128, ); GetClientRect(rect ); int oldBkMode = pDC->SetBkMode(TRANSPARENT); DrawPart = (rect.Width( ) < rect.Height( ) ) ? rect.Width( ) : rect.Height( ) ; if(DrawPart > MaxCoordinate) DrawPart = MaxCoordinate; MatrixPart = MaxCoordinate/DrawPart ; // part of matrix, which must be displayed X = ; X1 = X + DrawPart; Y = ; Y1 = Y + DrawPart;
CDC memdc, * myDC;
pDC->SetMapMode(MM_ISOTROPIC); SetWindowExtEx(*pDC ,DrawPart,DrawPart,NULL); SetViewportExtEx(*pDC,rect.right, -rect.bottom,NULL); SetViewportOrgEx(*pDC,0,rect.bottom,NUL L);
CBitmap bmp, *poldbmp;
memdc.CreateCompatibleDC( pDC); bmp.CreateCompatibleBitmap (pDC, DrawPart, DrawPart); poldbmp = memdc.SelectObject( &bmp ); memdc.BitBlt( 0,0,DrawPart, DrawPart,&memdc, 0, 0, WHITENESS ); myDC = &memdc; ... } |
|