Форум: "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.013 c