Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.09;
Скачать: CL | DM;

Вниз

Разные результаты StretchBlt   Найти похожие ветки 

 
DevilDevil ©   (2009-05-29 14:49) [0]

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

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

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


 
clickmaker ©   (2009-05-29 14:56) [1]

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

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


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

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


 
clickmaker ©   (2009-05-29 15:20) [3]

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


 
DevilDevil ©   (2009-05-29 15:24) [4]

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


 
Ega23 ©   (2009-05-29 15:31) [5]

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


 
DevilDevil ©   (2009-05-29 15:46) [6]

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

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


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

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


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

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

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


 
DevilDevil ©   (2009-05-29 16:32) [9]

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

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


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

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


 
DevilDevil ©   (2009-05-31 22:30) [11]

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

Сам гадаю, чем принципиально.
"Хороший" - полностью 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-06-01 13:25) [12]

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

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


 
DevilDevil ©   (2009-06-10 23:59) [13]

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

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

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


 
antonn ©   (2009-06-11 01:37) [14]

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


 
DevilDevil ©   (2009-06-11 14:32) [15]

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



Страницы: 1 вся ветка

Текущий архив: 2009.08.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
15-1244189127
scl20
2009-06-05 12:05
2009.08.09
Создание клиент-серверного приложения в Delphi


15-1244444698
Cerberus
2009-06-08 11:04
2009.08.09
Проблемы локальной сети.


15-1244700982
Рамиль
2009-06-11 10:16
2009.08.09
Бесплатные менеджеры проектов


8-1196165704
DmT
2007-11-27 15:15
2009.08.09
ПОЛУпрозрачность в некоторой области формы


2-1244697316
Pavlov
2009-06-11 09:15
2009.08.09
повторный запуск MDIChild и передача параметров