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

Вниз

Загрузка точек из файла Adobe Illustrator   Найти похожие ветки 

 
v_a_belousov   (2010-10-24 16:46) [0]

Здравствуйте! Есть файла*.ai - файл Adobe Illustrator написал процедуру загрузки точек из него...

procedure TSMainForm.GetPointsFromIllustrator(ai: string; out PolygonPoints: TPolygonPoints);
var i, num, anum: integer; ai_s: string;
ap: array of real; AiPos: array of integer;
begin
//
num := pos(AnsiUpperCase("Note"), AnsiUpperCase(ai));
//
ai := copy(ai, num+Length("Note"), Length(ai));
//
repeat
//
for i:=1 to 9 do
begin
 //
 num := pos(inttostr(i), ai);
 //
 if num<>0 then
  begin
   //
   anum := Length(AiPos);
   //
   SetLength(AiPos, anum+1);
   //
   AiPos[anum] := num;
  end;
end;
//
if Length(AiPos)>0 then
begin
 //
 for i:=0 to Length(AiPos)-1 do
  begin
   //
   if num>AiPos[i] then num:=AiPos[i];
  end;
end;
//
AiPos := nil;
//
if num<>0 then
begin
 //
 ai := copy(ai, num, Length(ai));
 //
 anum := Length(ap);
 //
 SetLength(ap, anum+1);
 //
 ap[anum] := StrToFloat(copy(ai, 1, pos(" ", ai)));
end;
//
ai := copy(ai, pos(" ", ai)+1, Length(ai));
until num=0;
//
SetLength(PolygonPoints, (Length(ap) div 2));
//
for i:=0 to Length(PolygonPoints)-1 do
begin
 //
 PolygonPoints[i].X := round(ap[i+i]);
 PolygonPoints[i].Y := round(ap[i+i+1]);
end;
end;

Но при рисовании полигона по этим точкам изображение получается перевернутым. Что не так не понимаю.


 
v_a_belousov   (2010-10-24 17:02) [1]

В параметр ai приходит текст из файла *.ai
TPolygonPoints = array of TPoint


 
Styx   (2010-10-24 20:49) [2]

Перевёрнутым - это нормально.
У экрана нуль сверху, а у Иллюстратора - снизу.


 
v_a_belousov   (2010-10-24 21:36) [3]


> Перевёрнутым - это нормально.
> У экрана нуль сверху, а у Иллюстратора - снизу.

А как мне его в программе перевернуть? Выходит так...
X := ScreenWidth - Point.X
Y := ScreenHeight - Point.Y ?


 
KilkennyCat ©   (2010-10-24 21:45) [4]


> ScreenHeight

картинкахейгт было бы разумнее


 
v_a_belousov   (2010-10-24 21:48) [5]


> картинкахейгт было бы разумнее

Ну да) Bitmap.Width Bitmap.Height
Вроде получилось. Спасибо!


 
v_a_belousov   (2010-10-24 22:29) [6]

Сделал так

 PolygonPoints[i].X := round(ap[i+i]);
 PolygonPoints[i].Y := MainImage_I.Picture.Bitmap.Height - round(ap[i+i+1]);

Но изображение теперь немного ниже чем должно быть. И ширина у него меньше чем должна быть. Подскажите пожалуйста что ещё нужно исправлять.


 
KilkennyCat ©   (2010-10-24 22:44) [7]

пропорционально или нет? если пропорции не нарушились, значит все хорошо, просто нужно ввести какой-нить коэффициент на масштабирование.

> немного ниже чем должно быть

ниже по координате у или уже по высоте?


 
v_a_belousov   (2010-10-24 23:04) [8]


> ропорционально или нет? если пропорции не нарушились, значит
> все хорошо, просто нужно ввести какой-нить коэффициент на
> масштабирование.
>

Пропорционально. А как ввести?

> ниже по координате у или уже по высоте?

по координатам... наверно...


 
v_a_belousov   (2010-10-24 23:38) [9]


> > ниже по координате у или уже по высоте?
>
> по координатам... наверно...

Просто не знаю как это словами объяснить проще... и само изображение и по высоте и по ширине немного меньше чем должно быть... это как я понимаю можно решить с помощью масштабирования... за это спасибо!!! Но и по координатам изображение чуть ниже чем надо...


 
KilkennyCat ©   (2010-10-25 07:02) [10]


> Но и по координатам изображение чуть ниже чем надо...


разумеется. пустое место - это тоже изображение. если масштаб не тот, то и положение не то.


 
v_a_belousov   (2010-10-25 12:15) [11]


> просто нужно ввести какой-нить коэффициент на масштабирование

А как его ввести подскажите пожалуйста.


 
v_a_belousov   (2010-10-25 12:39) [12]

Вставил коэффицент 1,34 вроде все совпадает теперь. Ещё раз спасибо)


 
DVM ©   (2010-10-25 21:38) [13]


> Вставил коэффицент 1,34 вроде все совпадает теперь.

Разного рода коэффициенты и постоянные неизвестной природы - это обычно костыли, скрывающие недостатки реализации или теории. Как временное решение сойдет, но не поняв причину такого различия использовать такие поправки чревато в будущем.


 
v_a_belousov   (2010-10-25 21:55) [14]


> не поняв причину такого различия использовать такие поправки
> чревато в будущем

а как понять причину? Узнать как Adobe все сохраняет?


 
DVM ©   (2010-10-25 22:16) [15]


> v_a_belousov   (25.10.10 21:55) [14]

AI файл внутри хранит данные в формате PostScript. Спецификация PostScript вроде как доступна и открыта, с ее изучения и надо начинать имхо. Вот тутнемного по твоей теме http://www.javaportal.ru/articles/ai.html


 
v_a_belousov   (2010-10-26 00:20) [16]


> по твоей теме http://www.javaportal.ru/articles/ai.html

спасибо нашел кое что полезное...



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

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

Наверх





Память: 0.48 MB
Время: 0.004 c
15-1285581726
Baks
2010-09-27 14:02
2011.01.16
Как определить русифицирована windows или нет?


15-1286210928
@!!ex
2010-10-04 20:48
2011.01.16
Где купить Штеуд не совместимый компьютер?


2-1287849951
Иван
2010-10-23 20:05
2011.01.16
Мерцание TStringGrid при отрисовке


15-1285675941
azamatufa
2010-09-28 16:12
2011.01.16
Мысли вслух про RAD


2-1287893500
Beginner2010
2010-10-24 08:11
2011.01.16
TTreeNodes.AddObject





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