Как улучшить качество Bitmap?
От: ls233  
Дата: 15.10.03 21:03
Оценка:
Мне нужно графически отобразить грид (физические координаты ~300x300) на максимально больших, логических, позволяемых дисплеем координатах (600x600 и больших). Для предотвращения мерцания, в начале создается весь "Bitmap" в памяти (по физическому гриду), а затем, используя "BitBlt", графически отображается на максимально больших, логических координатах. Проблема в том, что такое расширение приводит к сильному падению в качестве изображения.
Код приложен.
Буду благодарен за любую помощь.
Герман.

void CRecDrawView::OnDraw(CDC* pDC)
{
CRect rect ;
int X, X1, Y, Y1, MatrixPart, DrawPart;

COLORREF color = RGB( 128, 128, 0 );
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 = 0 ;
X1 = X + DrawPart;
Y = 0 ;
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,NULL);

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;
...
}


16.10.03 10:48: Перенесено модератором из 'C/C++' — ПК
Re: Как улучшить качество Bitmap?
От: Patalog Россия  
Дата: 16.10.03 10:14
Оценка:
Здравствуйте, ls233, Вы писали:

[]

Ежели я правильно понял слово "грид", то почему бы тебе его не рисовать чем-нить типа LineTo и не заморачиваться с битмапами?
Почетный кавалер ордена Совка.
Re: Как улучшить качество Bitmap?
От: Don Sergio  
Дата: 16.10.03 10:26
Оценка:
Здравствуйте, ls233, Вы писали:


///

А если не использовать всякие SetViewportExtEx, а для рисования воспользоваться функцией StretchDIBits — при растяжении картинки используются некоторые методы интерполяции (может быть даже кубическая). Можно так же руками обрабатывать, т. е. создать bitmap нужного размера и по определенному алгоритму Ваше изображение растянуть.
А вообще, что вы понимаете под качеством?
Re[2]: Как улучшить качество Bitmap?
От: ls233  
Дата: 21.10.03 19:19
Оценка:
Здравствуйте, Don Sergio, Вы писали:

DS>Здравствуйте, ls233, Вы писали:



DS>///


DS>А если не использовать всякие SetViewportExtEx, а для рисования воспользоваться функцией StretchDIBits — при растяжении картинки используются некоторые методы интерполяции (может быть даже кубическая). Можно так же руками обрабатывать, т. е. создать bitmap нужного размера и по определенному алгоритму Ваше изображение растянуть.

DS>А вообще, что вы понимаете под качеством?

Vo pervih spasibo.
Delo v tom chto elsi ne ispol'zovat' "всякие SetViewportExtEx" kak vi virazilis'... to k togda k sojaleniyu kartinka poluchaetsya razmitoi... vot v chyom problema.
German
Re[2]: Как улучшить качество Bitmap?
От: ls233  
Дата: 21.10.03 19:22
Оценка:
Здравствуйте, Patalog, Вы писали:

P>Здравствуйте, ls233, Вы писали:


P>[]


P>Ежели я правильно понял слово "грид", то почему бы тебе его не рисовать чем-нить типа LineTo и не заморачиваться с битмапами?


Vo pervih spasibo.
Pod slovom grid ya ne imeu v vidu ego tipichnoe znachenie a prosto dvuhmernuyu matritsu, (obichnii konteiner).
Re[3]: Как улучшить качество Bitmap?
От: Don Sergio  
Дата: 22.10.03 07:25
Оценка:
Здравствуйте, ls233, Вы писали:

///

При простом растяжении изображения без сглаживания (интерполяции) получится нечто некрасивое, со сглаживанием получится слегка размытая. Если качество не удовлетворяет, есть два способа:

1. Исходная картинка должна быть большего размера — с этим, как я понял, проблема.

2. Использовать фильтр повышения резкости. Если выводится одно и то же изображение, то этот вариант проходит (надо только грамотный фильтр подобрать ), тут главное, чтобы не пришлось фильтровать перед каждым выводом на экран, хотя есди комп быстрый.. но это все равно плохо.
Re[4]: Как улучшить качество Bitmap?
От: ls233  
Дата: 22.10.03 09:06
Оценка:
Здравствуйте, Don Sergio, Вы писали:

DS>Здравствуйте, ls233, Вы писали:


DS>///


DS>При простом растяжении изображения без сглаживания (интерполяции) получится нечто некрасивое, со сглаживанием получится слегка размытая. Если качество не удовлетворяет, есть два способа:


DS>1. Исходная картинка должна быть большего размера — с этим, как я понял, проблема.


DS>2. Использовать фильтр повышения резкости. Если выводится одно и то же изображение, то этот вариант проходит (надо только грамотный фильтр подобрать ), тут главное, чтобы не пришлось фильтровать перед каждым выводом на экран, хотя есди комп быстрый.. но это все равно плохо.



1. Sovershenno verno.
2. Znacheniya soderjasheesya v konteinere postoyanno menyayutsya i kak raz vsya fishka v tom chto bi otobrazit' etot process.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.