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

Вниз

GDI+ <> canvas.copyrect   Найти похожие ветки 

 
BB2000   (2007-05-07 21:32) [0]

Добрых суток, спецы и осваивуище...
Помогите!
Вопрос по GDI+.
какой есть аналог copyrect у GDI+.

Мне надо скопировать определённый регион канвы(Bitmap), хотелось бы это сделать с помощью GDI+. (вроде он быстрей работает.?)
Суть проблемы:
Имеется Картинка в битмапе(0,0,200,300), копировать надо много, часто и по частям в Runtime, при этом размер Distination постоянно меняется, от малого до мах.(во весь экран).
Если выводить стандартным методом, то отрисовка занимает много времени,(~300мсек.) тормоз на лицо. Очень заметно на экране,(метод рисования в "тени" тоже не проходит.). Вот хотелось бы узнать, как это сделать при помощи GDI+!

Спасибо, уделите вниманием. Плиз! Или хоть где капать-то.


 
antonn ©   (2007-05-07 22:01) [1]


> Если выводить стандартным методом

стандартный код в студию!

вообще canvas.copyrect() довольно быстро работает. На крайний случай есть BitBlt() - вроде еще быстрее.


 
Efir ©   (2007-05-07 22:41) [2]

В GDI+ тебе придётся копировать из объекта TGPImage/TGPBitmap, т.е., напрямую с TBitmap ничего не выйдет, поэтому сначала придётся перевести TBitmap в TGPBitmap, а потом с него и копировать. К тому же, если тебе не нужно сглаживание или уменьшение изображения, то CopyRect вполне хватит.


 
antonn ©   (2007-05-08 00:01) [3]

вообще copyrect() поддерживает ресайз изображения:) и даже переворот его, как по вертикали, так и по горизонтали:)


 
BB2000   (2007-05-08 00:05) [4]

Как мне известно BitBlt с регионами не пашет.
Ну к примеру, в TGPBitmap я могу перевести в самом начале проги, мне главно орудовать с тем что есть TGPBitmap. КАК? Как, вывести...
стандартный код в студию!

PLImage.Canvas.CopyRect(Rect(0,0,wtc,tboffset),PLBmp.Canvas,Rect(0,0,wtc,tboffse t));
PLImage.Canvas.CopyRect(Rect(0,(PLImage.Height-tboffset),wtc,PLImage.Height),PLBmp.Canvas,Rect(0,(PLBmp.Height-tboffset),wtc,PLBmp.Height));

for i:=1 to f+1 do begin
PLImage.Canvas.CopyRect(Rect((wtc+((i-1)*LIH)),0,(wtc+(i*LIH)),tboffset),PLBmp.Canvas,Rect(wtc,0,(PLBmp.Width-30),tboffset));
PLImage.Canvas.CopyRect(Rect((wtc+((i-1)*LIH)),(PLImage.Height-tboffset),(wtc+(i*LIH)),PLImage.Height),PLBmp.Canvas,Rect(wtc,(PLBmp.Height-tboffset),(PLBmp.Width-30),PLBmp.Height));
end;

Где: PLImage= куда выводим(Image, Paint,Form - без разници! ТОРМОЗ.)
PLBmp = расположение текстуры.(размер небольшой(0,0,300,200))


 
BB2000   (2007-05-08 00:09) [5]


> вообще canvas.copyrect() довольно быстро работает

Согласен! Но не на больших размеров.


 
BB2000   (2007-05-08 00:11) [6]

Таким методом пытался вывести изобр.. но никак нормально не вЫходИт.
Вот и думаю, КАК это сделать БЫСТРО!


 
Efir ©   (2007-05-08 12:44) [7]

Ну в крайнем случае используй CachedBitmap.


 
JohnJ   (2008-03-19 00:52) [8]

Clone



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

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

Наверх





Память: 0.46 MB
Время: 0.005 c
2-1277368711
LDV
2010-06-24 12:38
2010.09.19
кодировка


2-1277184716
Miko
2010-06-22 09:31
2010.09.19
Не найдена точка входа процедуры в DLL


15-1276971762
sniknik
2010-06-19 22:22
2010.09.19
Перехват ссылки в TWebBrowser.


15-1277238595
Юрий
2010-06-23 00:29
2010.09.19
С днем рождения ! 23 июня 2010 среда


15-1277497794
Юрий
2010-06-26 00:29
2010.09.19
С днем рождения ! 26 июня 2010 суббота





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский