Главная страница
    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.5 MB
Время: 0.006 c
2-1228993138
cvg
2008-12-11 13:58
2009.01.25
Как сделать строчку или символ в memo жирным?


15-1226736374
Cyrax
2008-11-15 11:06
2009.01.25
Что такое "лит. А" ? Какая-то новая категория ?


15-1228007664
Астро
2008-11-30 04:14
2009.01.25
Перевод функций на ассемблер и вставка их в Delphi Как лучше?


2-1229339493
smartleds
2008-12-15 14:11
2009.01.25
Подскажите плз как массив TrackBar-ов поместить в ScrollBox?


15-1228202472
Костик
2008-12-02 10:21
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский