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

Вниз

Загрузка точек из файла 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.008 c
15-1286224153
Юрий
2010-10-05 00:29
2011.01.16
С днем рождения ! 5 октября 2010 вторник


2-1287766980
volkafff
2010-10-22 21:03
2011.01.16
Обращение ко всем записям.


15-1285760336
БарЛог
2010-09-29 15:38
2011.01.16
Разрешить USB floppy, запретить USB HDD


15-1285257928
Leonid Troyanovsky
2010-09-23 20:05
2011.01.16
Три фильма


15-1286185224
картман
2010-10-04 13:40
2011.01.16
впн через впн