![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Разные результаты 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]> в разных проектах
на разных компах или ОС?