Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Разные результаты StretchBlt


DevilDevil ©   (2009-05-29 14:49:00) 

Не буду вдаваться в подробности, но вызов StretchBlt одного изображения в разных проектах выдаёт разные результаты:
http://devilhome.narod.ru/1.jpg(хороший)
и
http://devilhome.narod.ru/2.jpg(нехороший)

В чём может быть дело???

p.s. в обоих случаях предварительно вызывается SetStretchBltMode(Dest, HALFTONE);


DevilDevil   (2009-06-11 14:32:00) [1]

в таких вещах смелость не нужна


antonn   (2009-06-11 01:37:00) [2]

ну хорошо хоть смелости хватило признаться :)


DevilDevil   (2009-06-10 23:59:00) [3]

Причина разных результатов обнаружена - я идиот!

В одном месте забыл поставить else... и производился левый метод.

Спасибо за помощь


Sapersky   (2009-06-01 13:25:00) [4]

А при выводе через BitBlt результат одинаковый? Может, файл грузится по-разному.
В моём тесте масштабирования StretchBlt работает правильно?

Ещё такое замечание: FastDIB - всегда DIB, TBitmap может быть и DIB и DDB. Посмотри TBitmap.HandleType.


DevilDevil   (2009-05-31 22:30:00) [5]

>А чём вообще отличаются "хороший" и "плохой" проекты?

Сам гадаю, чем принципиально.
"Хороший" - полностью VCL
"Плохой" - FastLib, IJL

В "Хорошем" используется обычный Canvas.CopyRect
В "Плохом" пробовал:
- FastDIB.StretchRect(...
- StretchBlt(FastDIB.hDC, ...
- C := TCanvas.Create; C.Handle := FastDIB.hDC; ... C.CopyRect(...

Результат во всех случаях один!

Пробовал SetStretchBltMode и для Dest и для Src.
Ещё перед вызовом копирования пробовал Set8087CW(Default8087CW)

Ребята, в чём дело?


Sapersky   (2009-05-29 17:47:00) [6]

А чём вообще отличаются "хороший" и "плохой" проекты?
Главным образом в смысле методов использования TFastDIB, если это он.


DevilDevil   (2009-05-29 16:32:00) [7]

Не, к сожалению, не прокатило.
Сделал как в Graphics:

GetBrushOrgEx(Result.hDC, pt);
SetStretchBltMode(Result.hDC, HALFTONE);
SetBrushOrgEx(Result.hDC, pt.x, pt.y, @pt);


clickmaker   (2009-05-29 16:17:00) [8]

> как должно выглядеть brush misalignment

видимо, как на шляпе )


Sapersky   (2009-05-29 15:58:00) [9]

Может в этом дело:
Also note that SetBrushOrgEx must be called after setting the HALFTONE mode to avoid brush misalignment.
(из хелпа по SetStretchBltMode)
Хотя я не в курсе, как должно выглядеть brush misalignment, никогда не сталкивался.


DevilDevil   (2009-05-29 15:46:00) [10]

>Они же одинаковые???

нет. Особено заметно на шляпе


Ega23   (2009-05-29 15:31:00) [11]

Они же одинаковые???


DevilDevil   (2009-05-29 15:24:00) [12]

один и тот же файл


clickmaker   (2009-05-29 15:20:00) [13]

значит, исходные картинки разного качества


DevilDevil   (2009-05-29 15:14:00) [14]

на одном компьютере в разных проектах


clickmaker   (2009-05-29 14:56:00) [15]

> в разных проектах

на разных компах или ОС?


Наверх

Титульная страница Поиск, карта сайта Написать письмо