Форум: "Начинающим";
Текущий архив: 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