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

Вниз

ВЫВЕСТИ часть 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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.017 c
6-25479
CaDIsT
2003-11-03 09:30
2004.01.09
TTcpServer и TTcpClient


1-25388
lena19
2003-12-24 21:44
2004.01.09
подскажите как избавится от части данных в массиве


14-25499
Thor
2003-12-19 16:36
2004.01.09
Дом престарелых.


1-25399
Checist [root]
2003-12-12 17:41
2004.01.09
Полная загрузка страницы в WebBrowser


1-25436
EugenCFG
2003-12-23 18:25
2004.01.09
Здраствуйте... ! Кто-нибудь знает как определить координаты...