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

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

Ускоренная реализация


Страницы:   1 2

CodeMaster ©   (2008-12-08 19:28:00) 

Здраствуйте Мастера. Вот недавно задался вопросом как ускорить реализацию кода. Например вывести Bitmap на Канву. Знаю что это функции GDI+. Никак не могу разобраться с типом HBitmap. Подскажите как из файла загрузить в HBitmap


CodeMaster   (2008-12-09 17:18:00) [1]

=)


Германн   (2008-12-09 16:51:00) [2]


> Спасибо всем кто помогал в рождении плеера.
>

Не вздумай теперь алименты требовать!
:)


CodeMaster   (2008-12-09 16:43:00) [3]


> Anatoly Podgoretsky ©   (09.12.08 16:34) [20]

Спасибо я так и сделал, всё получилось. теперь моя программа шустрая и красивая.

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


Anatoly Podgoretsky   (2008-12-09 16:34:00) [4]

> CodeMaster  (09.12.2008 16:15:18)  [18]

Не бери с таких источников код, обычно он кривой по самое не могу, этот тоже очень кривой.
Правильно решение - переписать все нахрен.


CodeMaster   (2008-12-09 16:18:00) [5]

Сразу хочу сообщить оригинальный код тоже не работает


CodeMaster   (2008-12-09 16:15:00) [6]

Вот немного отредактировал код взятый с delphiworld но почемуто он отказывается работать. Поищите ошибку пожалуйста
//FrameWidth,FrameHeight: Integer - Величина кнопки

> procedure TPOGiButton.Morphing(Bm1,Bm2: TBitmap; SCanvas:
>  HDC);
> const
>   count = 100;
> var
>   i: integer;
>   x, y: integer;
>   bm: TBitMap;
>   p1, p2, p: PByteArray;
>   c: integer;
>   k: integer;
> begin
>   bm := TBitMap.Create;
>
>
>
>   bm.PixelFormat := pf24bit;
>   bm1.PixelFormat := pf24bit;
>   bm2.PixelFormat := pf24bit;
>   Bm.Width:= bm1.Width;
>   Bm.Height:= Bm1.Height;
>
>
>   BitBlt(SCanvas,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;
>
>     BitBlt(SCanvas,0,0,FrameWidth,FrameHeight,Bm.Canvas.
> Handle,0,0,SRCCOPY);
>
>
>     Application.ProcessMessages;
>     if Application.Terminated then
>       break;
>   end;
>
>
>
>  bm.Destroy;
> end;


Anatoly Podgoretsky   (2008-12-09 14:39:00) [7]

> CodeMaster  (09.12.2008 13:17:11)  [11]

Может TCanvas?


CodeMaster   (2008-12-09 14:13:00) [8]

Справился с этой задачей. Спасибо всем.
Но тут появилась ещё одна нигде не могу найти алгоритм эффекта морфинга, искал на DelphiWorld.ru там есть похожий пример но он очень медленный и вся работа идёт с TBrush. Пытался сам реализовать и конечно ничего из этого не вышло, может дадите направление где искать?


CodeMaster   (2008-12-09 14:10:00) [9]

На чистом API я ещё не готов


KilkennyCat   (2008-12-09 14:04:00) [10]


> Все компоненты делаю под себя.

великий могучий русский язык... Под себя ходить можно.
Но это так.... мимоходом...

Может, проще тогда на чистом апи?


KilkennyCat   (2008-12-09 14:01:00) [11]

Вспоминается один известный пример работы с директиксом, где для "удобства" привязана канва к поверхности.


clickmaker   (2008-12-09 13:44:00) [12]

> [11] CodeMaster ©   (09.12.08 13:17)

а Canvas - это ни разу не часть VCL?
Как это сочетается с "Все компоненты делаю под себя"?


CodeMaster   (2008-12-09 13:17:00) [13]


> Тогда что есть "Канва"?

Canvas


Германн   (2008-12-09 12:42:00) [14]


> Я не использую стандартные VCL компоненты.

Тогда что есть "Канва"?


CodeMaster   (2008-12-09 12:33:00) [15]

Делаю я проигрыватель и хотелось бы чтобы он работал шустренько. Я не использую стандартные VCL компоненты. Все компоненты делаю под себя.


Германн   (2008-12-09 12:25:00) [16]


> oxffff ©   (09.12.08 11:43) [7]
>
>
> > Подскажите как из файла загрузить в HBitmap
>
>
> LoadBitmap
>

Из файла?

И вообще. Пока автор не расскажет о своей задаче, все ответы на вопрос как "вывести Bitmap на Канву" следует ограничить ответом [3]. Ибо в VCL-ном приложении быстрее никак не получится.


oxffff   (2008-12-09 11:43:00) [17]


> Подскажите как из файла загрузить в HBitmap


LoadBitmap


clickmaker   (2008-12-09 11:34:00) [18]

> Тип TBitmap слишком долго реализуется мне нужен HBitmap

TBitmap.Handle


Германн   (2008-12-09 11:12:00) [19]


> Никак не могу разобраться с типом HBitmap.

А что тут разбираться. Вот что написано в Windows.pas
HBITMAP = type LongWord;
 {$EXTERNALSYM HBITMAP}


codemaster   (2008-12-09 10:33:00) [20]

antonn: Нет такой способ не подходит. Тип TBitmap слишком долго реализуется мне нужен HBitmap


Страницы:   1 2

Наверх

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