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

Вниз

ВЫВЕСТИ часть TMetafile в TImage или TPaint, или векторная график   Найти похожие ветки 

 
dzmitry_   (2003-09-04 14:29) [0]

ВЫВЕСТИ часть TMetafile в TImage или TPaint, или векторная графика Дельфи

Image:=TMetafile.Create;
mfc:=TMetafileCanvas.Create(Image,0);
mfc.Brush.Color:=clWhite;
mfc.FillRect(mfc.ClipRect);
for i:=0 to pred(Length(AllObj)) do DrawObj(AllObj[i],mfc); //здесь рисуем нужние вещи
mfc.Free;
Rect1:=Bounds(0,0,Image1.Width,Image1.Height);
Rect2:=Rect1;
Rect2.Left:=Rect2.Left+dX; Rect2.Top:=Rect2.Top+dY;
Rect2.Right:=Rect2.Right+dX; Rect2.Bottom:=Rect2.Bottom+dY;
//Rect2:=Bounds(Rect1.Left+dX,Rect1.Top+dY,Rect1.Right+dX,Rect1.Bottom +dY); !!!!!!!!!!!!!!
//не знаю что творилось, но предыдущая строчка не работала!!!
//в Rect2 находились числа, но не те, которые должны были бы получаться
//Rect1.Right=768 dX=464 Rect2.Right=Rect1.Right+dY=1696!!!
//и прочие немыслимые варианты, хотя мне кажется что должно быть 1232
//и кто врёт - я или компьютер, мне почему то кажется, что я побеждаю,
//так как на моей стороне подсчёт в голове, на калькуляторе, и на бумаге
//(не забыл я всё таки школу)
//могу дать скриншоты по почте
//предыдущие строчки убрали ту проблему, но вопрос не про это

//хотелось бы эту строчку, но передать нужно канвас, который уже
//недоступен, а в метафайле есть заморочка - незакрытый канвас -
//в метафайле картинка пуста...
Image1.Canvas.CopyRect(Rect1,Image,Rect2);

//эта строчка тоже не работает... фиг знает почему
Image1.Canvas.Draw(0,0,Image);

//и т.д. уже не важно...

небольшой комментарий...
так же неплохо, если предложите другой вариант организации рисования на
картинке размером многоХмного (до 10000*10000) явно что битмап сдохнет на
таком, перерисовывать часть и выводить только то что видно - так было
реализовано, но число AllObj тоже великовато, в память всё загрузить
нереально (больше полутора миллионов обьектов), и если на каждый скролинг
диск шуршит немеряно...
потому было решено использовать TMetafile, который в итоге занимает в
принципе немного - чуть менее 500М...
а я продолжаю искать другие решения, но и жругие варианты приму...


 
MBo   (2003-09-04 14:35) [1]

излит поток сознания...

Четко сформулируй вопрос.


 
dzmitry_   (2003-09-04 14:38) [2]

чётко - как вывести часть TMetafile в TImage...

типа этой команды Image1.Canvas.CopyRect(Rect1,Image,Rect2);


 
MBo   (2003-09-04 14:46) [3]

Image1.Canvas.CopyRect(Rect1,Metafilecanvas,Rect2);


 
dzmitry_   (2003-09-04 15:06) [4]

выдаёт ошибка... на память не скажу - здесь исходников нет, но вылетает на то, что не закрыт ресурс, и не нет доступа для копирования


 
Digital Man   (2003-09-04 20:11) [5]

Ничего у вас не выйдет с метафайлами :-) не для такого количества объектов они предназначены. Пишите или свой векторный движок или пользуйтесь готовым - оптимизированным для работы с большим количеством объектов.


 
Digital Man   (2003-09-04 20:13) [6]

да, посмотрите компоненты http://vkasoft.narod.ru - хорошо работают с большим количеством векторных объектов.


 
dzmitry_   (2003-09-05 12:00) [7]

в общем спасибо, сейчас буду глядеть...
в принципе, это почти даже картография, хотя чуть не та тема...

и я прогладел - ошибку даёт can only modify an image if it contains a bitmap
raise EInvalidOperation


 
dzmitry_   (2003-09-05 12:30) [8]

нет, такое не пойдёт!! во первых - базы данных БДЕ, а во вторых - без исходников...


 
Digital Man   (2003-09-05 13:41) [9]

Помоему там без разницы BDE или не BDE можно пользоваться любыми к которым есть доступ из Delphi.
А вот без исходников это да.


 
Digital Man   (2003-09-05 13:42) [10]

Тогда прямиком в поиск по GIS PANORAMA - эта с исходниками, другое врядли подойдет, т.к. слишком много объектов


 
dzmitry_   (2003-09-08 11:33) [11]

спасибо кто хотел мне помочь, решение пришло во сне... в бредовом сне, потому как болел, но решение мне подошло

Bmp.Width:=...
Bmp.Height:=...
Bmp.Draw(...,...,mf)



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

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

Наверх





Память: 0.47 MB
Время: 0.01 c
4-25670
igornov
2003-10-15 15:31
2004.01.09
Как определить момент когда пользователь сделал Log off?


4-25659
Dido
2003-11-08 05:25
2004.01.09
Как узнать заголовок активного окна?


1-25372
-=DeMoH=-
2003-12-23 15:12
2004.01.09
Кто знаком с мат.статистикой?


3-25265
Chuha
2003-12-10 22:45
2004.01.09
BDE


14-25581
SergP
2003-12-18 00:50
2004.01.09
PHP&MySQL. Нужно узнать значение присвоеное автоинкр. полю.





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