Главная страница
    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
15-1276979398
Юрий
2010-06-20 00:29
2010.09.19
С днем рождения ! 20 июня 2010 воскресенье


15-1277470736
12
2010-06-25 16:58
2010.09.19
Киньтесь ссылкой на архив иконок


15-1277321953
Petr V. Abramov
2010-06-23 23:39
2010.09.19
Как правильно пожарить свиную шейку?


2-1277215414
SIV500
2010-06-22 18:03
2010.09.19
Отослать сообщение окну...


15-1277095834
И. Павел
2010-06-21 08:50
2010.09.19
Странное переполнение





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