2009-12-03 3 views
0

У меня есть код, который рисует мои собственные прямоугольные кнопки на основе исходного растрового изображения.Устранение проблемы с StretchBlt()

Большую часть времени кнопки назначения больше, чем исходное растровое изображение, а StretchBlt отлично работает. Однако, когда место назначения меньше исходного изображения, StretchBlt отказывается заполнить всю область назначения.

Я знаю, что StretchBlt невелик по качеству, когда дело доходит до уменьшения изображений, но я не слишком обеспокоен этим. Я просто не хочу отсутствующих пикселей.

Здесь связь с исходным изображением в верхней части и назначения в нижней части:

link text Обратите внимание, я на самом деле сокращение части исходного изображения в пункт назначения. Я не уменьшаю весь снимок. Так, например, я копирую размер углов для размера с помощью BitBlt(), затем я растягиваю (сквошу) данные горизонтального пикселя между углами от исходного изображения до конечного DC.

В моих координатах источника и назначения нет ошибок. Если я перейду от SRCCOPY к WHITENESS, вся область заполняется белым цветом, как вы ожидали. Нет серой полосы, где пиксели не копируются, как вы видите в изображении Broken.bmp выше.

У кого-нибудь была эта проблема раньше, и если да, может кто-нибудь предложить решение?

Cheers

ответ

0

Я решил проблему. В StretchBlt() нет ничего плохого. Проблема заключалась в том, что растровое изображение, которое я создал и связанное с моим рабочим DC, было слишком маленьким, чтобы разместить изображение, чтобы оно обрезало его. К сожалению.