Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.01.25;
Скачать: [xml.tar.bz2];

Вниз

Проблема с выводом на канву   Найти похожие ветки 

 
CodeMaster ©   (2008-12-11 21:41) [0]

Здраствуйте Мастера: Не могу понять почему у меня не выводится изображение на канву. Через BiTBlt

var
BackBitmap,Bm1,Bm2: TBitmap;
FrameWidth,FrameHeight: Integer;
begin
BackBitmap:= TBitmap.Create;
BackBitmap.Handle:= LoadImage(0,PCHar(FileName),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
//FileName здесь имя файла
FrameWidth:= BackBitmap.Width div FrameCount;
//FrameCount - здесь кол-во кадров
FrameHeight:= BackBitmap.Height;

Bm1:= TBitmap.Create;
Bm2:= TBitmap.Create;
Bm1.Width:= FrameWidth;
Bm1.Height:= FrameHeight;
Bm2.Width:= FrameWidth;
Bm2.Height:= FrameHeight;

BitBlt(Bm1.Canvas.Handle,0,0,FrameWidth,FrameHeight,BackBitmap.Canvas.Handle,0,0 ,SRCCOPY);

BitBlt(Bm1.Canvas.Handle,0,0,FrameWidth,FrameHeight,BackBitmap.Canvas.HandleFram eWidth,0,SRCCOPY);

//Процедура вызова вывода графики

procedure ...(var Bm1,Bm2: TBitmap);

BitBlt(Canvas.Handle,0,0,FrameWidth,FrameHeight,Bm1.Canvas.Handle,0,0,SRCCOPY );

//Здесь находится цикл плавного перехода изображения в другое

BitBlt(Canvas.Handle,0,0,FrameWidth,FrameHeight,Bm2.Canvas.Handle,0,0,SRCCOPY)
;


Выделенные строки почему-то отказываются работать хотя если использовать
Canvas.Draw(0,0,Bm1);

............
Canvas.Draw(0,0,Bm2);

Всё работает...

Пожалуйста помогите мне разобраться в этой неразберихе


 
{RASkov} ©   (2008-12-11 22:46) [1]

> [0] CodeMaster ©   (11.12.08 21:41)

С таким вопросом, т.е. с такой его постановкой можно долго ответа ждать...


 
CodeMaster ©   (2008-12-11 22:49) [2]


> {RASkov} ©   (11.12.08 22:46) [1]
> > [0] CodeMaster ©   (11.12.08 21:41)
>
> С таким вопросом, т.е. с такой его постановкой можно долго
> ответа ждать...

Cуть вопроса состоит в том, что я не могу разобраться почему методом Canvas.Draw выводит а BiTBlt нет, Хотя все параметры верны.


 
{RASkov} ©   (2008-12-11 23:00) [3]

> [2] CodeMaster ©   (11.12.08 22:49)

Я пытался понять структуру кода в [0] так и не понял.... вот я о чем :(
Я бы проверил и может быть попробывал бы найти ошибку или найти причину, но...
Набросай пример, что бы можно было скопировать отсюда, подставив в него только имена файлов с картинками.
Так-же укажи форматы и размеры картинок....
А так.... ну может кто и подскажет.... может тут и не так все сложно как кажется :)


 
antonn ©   (2008-12-11 23:00) [4]

попробуй битмапам задать вручную pixelformat


 
CodeMaster ©   (2008-12-12 10:39) [5]

procedure TPOGiButton.Morphing(var Bm1,Bm2: TBitmap);
const
 count = 250;
var
 i: integer;
 x, y: integer;
 bm: TBitMap;
 p1, p2, p: PByteArray;
 c: integer;
 k: integer;
begin
 bm := TBitMap.Create;

Bm.Width:= Bm1.Width;
Bm.Height:= Bm1.Height;
 bm.PixelFormat := pf24bit;
 bm1.PixelFormat := pf24bit;
 bm2.PixelFormat := pf24bit;

Canvas.Draw(0,0,bm1);  //BitBlt(Canvas.Handle,0,0,FrameWidth,FrameHeight,
//Bm1.Canvas.Handle,0,0,SRCCOPY);
//Неработающая процедура
 for i := 1 to count - 1 do
 begin
   for y := 0 to bm.Height - 1 do
   begin
     p := bm.ScanLine[y];
     p1 := bm1.ScanLine[y];
     p2 := bm2.ScanLine[y];
     for x := 0 to bm.Width * 3 - 1 do
       p^[x] := round((p1^[x] * (count - i) + p2^[x] * i) / count);
   end;
Canvas.Draw(0,0,bm);      //BitBlt(Canvas.Handle,0,0,FrameWidth,FrameHeight,Bm.Canvas.Handle,0,0,SRCCOPY);
//Неработающая процедура
   Application.ProcessMessages;
   if Application.Terminated then
     break;
 end;
  Canvas.Draw(0,0,Bm2);
//BitBlt(Canvas.Handle,0,0,FrameWidth,FrameHeight,Bm2.Canvas.Handle,0,0,SRCCOPY);
//Неработающая процедура
 bm.Destroy;
end;


 
{RASkov} ©   (2008-12-12 11:17) [6]

> [5] CodeMaster ©   (12.12.08 10:39)

Работает же и с Draw и с BitBlt....


 
antonn ©   (2008-12-12 12:32) [7]

FrameWidth,FrameHeight не заданы


 
{RASkov} ©   (2008-12-12 12:48) [8]

> [7] antonn ©   (12.12.08 12:32)

Но этож Width и height выводимой(копируемой) картинки... Думаю, автору об этом известно....)
Они даже не определены(нет описания).... в [5], хотя в [0] присутствуют, но толку от них тоже - 0)


 
codemaster ©   (2008-12-12 16:06) [9]

{RASkov} ©   (12.12.08 11:17) [6]
У тебя работает и с Draw и с BitBlt?


 
{RASkov} ©   (2008-12-12 17:00) [10]

> [9] codemaster ©   (12.12.08 16:06)

Да.



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

Форум: "Начинающим";
Текущий архив: 2009.01.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
2-1228835429
Илья_
2008-12-09 18:10
2009.01.25
Вопрос по таблице ASCII и отображению символа "минус"


15-1228071771
{RASkov}
2008-11-30 22:02
2009.01.25
Выбор структуры приложения с использованием пакетов


15-1228289254
Sergey13
2008-12-03 10:27
2009.01.25
Проблемы с локальной сетью


1-1207321243
dmitry_12_08_74
2008-04-04 19:00
2009.01.25
Автозагрузка приложения


8-1189442774
copron
2007-09-10 20:46
2009.01.25
цветное в черно-белое





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский