|
|
|
Масштабирование части изображения (StretchBlt)
|
|||
|---|---|---|---|
|
#18+
На экран выведено полное изображение с помощью StretchBlt. Далее идет перерисовка части этого изображения, также, с помощью StretchBlt. В результате получается немного искаженное изображение. Т.е. результат при StretchBlt полного изображения и StretchBlt части изображения отличается. Как этого избежать? Т.е., чтобы была возможность перерисовать изображения по частям, причем части изображения могут перекрывать друг друга, и результат не отличался от полной перерисовки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 14:36:15 |
|
||
|
Масштабирование части изображения (StretchBlt)
|
|||
|---|---|---|---|
|
#18+
У меня есть подозрение, что следует изменять весь HBITMAP, а затем выводить целиком. Возможно не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 09:47:10 |
|
||
|
Масштабирование части изображения (StretchBlt)
|
|||
|---|---|---|---|
|
#18+
vlad21 wrote: > В результате получается немного искаженное изображение. Можно скриншот? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 13:36:11 |
|
||
|
Масштабирование части изображения (StretchBlt)
|
|||
|---|---|---|---|
|
#18+
to 1211212: Не хотелось бы выводить целиком, меняется только часть изображения. to ErV: Вот скриншот: Слева изображение полученное с помощью полной перерисовки, справа по частям(Заполняются цветом квадраты). На этом рисунке видно что изображения отличаются. Именно в тех местах где была частичная перерисовка (синие квадраты). Изображение формируется в памяти, а потом выводится на экран и при этом масштабируется. Если без масштабирования, то перерисовка по частям не вызывает искажений. Не знаю видимо, тут необходима какая то своя функция масштабирования и StretchBlt не подходит. И это видимо из за того, что соотношение сторон прямоульника (который хранится в памяти и который получается при масштабировании) при полной перерисовке и при частичной, хоть и немного, но отличается. Пример: есть изображение шириной в 80 пикселов. Оно выводится на экран шириной в 100 пикселов. Т.е. коэф. масштабирования 100/85 = 1.25 Теперь необходимо перерисовать часть этого изображения, при этом часть, имеет ширину в 22 пиксела, применяем коэф. 22*1.25 = 27.5. Т.е. изображение должно растянуться на ширину равную 27.5 пикселов, при этом происходит огругление и следствие этого - перерисовка не повторяющая полную перерисовку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 07:26:31 |
|
||
|
Масштабирование части изображения (StretchBlt)
|
|||
|---|---|---|---|
|
#18+
vlad21 wrote: > Теперь необходимо перерисовать часть этого изображения, при этом > часть, имеет ширину в 22 пиксела, применяем коэф. 22*1.25 = 27.5. Попробуйте рисовать блоками, которые будут иметь целочисленные размеры до и после масштабирования. Т.е. для 100/85 - это 20/17. Т.е. в этом случае, чтобы не было искажений, надо рисовать квадратами, которые в исходном изображении будут 17 пикселей шириной/высотой, а в новом - 20. Просто StretchBlt дробные размеры использовать не может. (и DDraw, по-моему, тоже). Т.е. надо или вот такими квадратиками рисовать, или брать OpenGL или Qt 4, где дробные размеры - не проблема. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 13:11:09 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=274&tid=2028070]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 352ms |

| 0 / 0 |
