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

Вниз

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 вся ветка

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

Наверх




Память: 0.46 MB
Время: 0.004 c
15-1276784558
Aleks
2010-06-17 18:22
2010.09.19
Armadillo (неожиданное автозакрытие программы)


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


2-1277317567
lihoy_p5
2010-06-23 22:26
2010.09.19
загрузка следующего изображения


10-1168111829
nali
2007-01-06 22:30
2010.09.19
Ошибка при вызове com сервера...


15-1277099793
12
2010-06-21 09:56
2010.09.19
Ошибка AV на строке TRY. Что за ерунда?





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