Как заполнить элемент пути цветом - PullRequest
2 голосов
/ 28 июля 2011

Я пытаюсь нарисовать замкнутый путь и залить его каким-нибудь цветом. Здесь код

startRulerUnits = app.preferences.rulerUnits

startTypeUnits = app.preferences.typeUnits

startDisplayDialogs = app.displayDialogs



//change settings

app.preferences.rulerUnits = Units.PIXELS

app.preferences.typeUnits = TypeUnits.PIXELS

app.displayDialogs = DialogModes.NO



var AD = activeDocument;



var bBox = new Array();

bBox[0] = 10;

bBox[1] = 10;



bBox[2] = 50;

bBox[3] = 10;



bBox[4] = 50;

bBox[5] = 50;



bBox[6] = 10;

bBox[7] = 50;



var line = new Array();

line[0] = new PathPointInfo;

line[0].kind = PointKind.CORNERPOINT;

line[0].anchor = [bBox[0],bBox[1]];

line[0].leftDirection = line[0].anchor;

line[0].rightDirection = line[0].anchor;



line[1] = new PathPointInfo;

line[1].kind = PointKind.CORNERPOINT;

line[1].anchor = [bBox[2],bBox[3]];

line[1].leftDirection = line[1].anchor;

line[1].rightDirection = line[1].anchor;



line[2] = new PathPointInfo;

line[2].kind = PointKind.CORNERPOINT;

line[2].anchor = [bBox[4],bBox[5]];

line[2].leftDirection = line[2].anchor;

line[2].rightDirection = line[2].anchor;



line[3] = new PathPointInfo;

line[3].kind = PointKind.CORNERPOINT;

line[3].anchor = [bBox[6],bBox[7]];

line[3].leftDirection = line[3].anchor;

line[3].rightDirection = line[3].anchor;



var lineSubPath= new Array();

lineSubPath[0] = new SubPathInfo();

lineSubPath[0].operation = ShapeOperation.SHAPEXOR;

lineSubPath[0].closed = true;

lineSubPath[0].entireSubPath = line;



var path = AD.pathItems.add("A", lineSubPath);



//var paperShape = AD.artLayers.add();



var colorRef = new SolidColor;

colorRef.rgb.red = 255

colorRef.rgb.green = 100;

colorRef.rgb.blue = 10;







path.fillPath(colorRef, ColorBlendMode.COLOR,100,true,0,true,true);



//shapeLayer.applyStyle("ransom_note");*/



app.preferences.rulerunits = startRulerUnits

app.preferences.typeunits = startTypeUnits

app.displayDialogs = startDisplayDialogs

путь прорисован, но ошибка появляется при заполнении

fillPath не является функцией.

Кто-нибудь может помочь?

P.S. Извините за мой английский

1 Ответ

1 голос
/ 09 февраля 2012

path является свойством Application, Photoshop не понимает, когда вы пытаетесь применить к нему fillPath, даже если вы объявили его как имя переменной ... вы просто запутываете Photoshop в том, чтоdo.

Вы должны просто изменить имя этой переменной на что-то вроде myPath, и тогда будет работать myPath.fillPath(colorRef, ColorBlendMode.COLOR,100,true,0,true,true);.

Я бы также внес небольшое изменение в ColorBlendMode, если выустановите его на COLOR, вы фактически не сможете увидеть цвет, который вы применяете, и будет казаться, что скрипт вообще не работает.

Попробуйте myPath.fillPath(colorRef, ColorBlendMode.NORMAL,100,true,0,true,true); и все готово!

...