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

Вниз

Ускоренная реализация   Найти похожие ветки 

 
CodeMaster ©   (2008-12-08 19:28) [0]

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


 
Сергей М. ©   (2008-12-08 19:53) [1]


> ускорить реализацию кода


Реализуют алгоритм, а не код.


 
{RASkov} ©   (2008-12-08 20:23) [2]

> [0] CodeMaster ©   (08.12.08 19:28)
> Подскажите как из файла загрузить в HBitmap

http://yandex.ru/yandsearch?text=%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0+%D0%B8%D0%B7+%D1%84%D0%B0%D0%B9%D0%BB%D0%B0+HBitmap&clid=14585&stpar2=%2Fh0%2Ftm50%2Fs2&stpar4=%2Fs2


 
antonn ©   (2008-12-08 20:36) [3]


> Например вывести Bitmap на Канву. Знаю что это функции GDI+.

просто вывести TBitmap можно быстро и функциями GDI (например BitBlt())


 
codemaster ©   (2008-12-09 10:33) [4]

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


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


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

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


 
clickmaker ©   (2008-12-09 11:34) [6]

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

TBitmap.Handle


 
oxffff ©   (2008-12-09 11:43) [7]


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


LoadBitmap


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


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

Из файла?

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


 
CodeMaster ©   (2008-12-09 12:33) [9]

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


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


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

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


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


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

Canvas


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

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

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


 
KilkennyCat ©   (2008-12-09 14:01) [13]

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


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


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

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

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


 
CodeMaster ©   (2008-12-09 14:10) [15]

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


 
CodeMaster ©   (2008-12-09 14:13) [16]

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


 
Anatoly Podgoretsky ©   (2008-12-09 14:39) [17]

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

Может TCanvas?


 
CodeMaster ©   (2008-12-09 16:15) [18]

Вот немного отредактировал код взятый с 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;


 
CodeMaster ©   (2008-12-09 16:18) [19]

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


 
Anatoly Podgoretsky ©   (2008-12-09 16:34) [20]

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

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


 
CodeMaster ©   (2008-12-09 16:43) [21]


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

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

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


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


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

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


 
CodeMaster ©   (2008-12-09 17:18) [23]

=)



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

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

Наверх




Память: 0.52 MB
Время: 0.018 c
15-1228137159
pavel_guzhanov
2008-12-01 16:12
2009.01.25
как зарегистрировать TurboDelphi 2006?


15-1228147798
Керк
2008-12-01 19:09
2009.01.25
ipconfig /flushdns


6-1197396798
istok
2007-12-11 21:13
2009.01.25
стабильный и мощный FTP - реально?


2-1228831692
ther
2008-12-09 17:08
2009.01.25
редактирование ListView


3-1213785828
zorik
2008-06-18 14:43
2009.01.25
Оптимизация запроса