Καθορίζει την κλάση SoLeResource που περιέχει πληροφορίες σχετικά με ένα επίπεδο έξυπνου αντικειμένου σε ένα αρχείο PSD. Is χρησιμοποιείται για την υποστήριξη επιπέδων έξυπνων αντικειμένων με εξωτερικούς συνδέσμους αρχείων στις εικόνες του Adobe® Photoshop®.
Λαμβάνει ή ορίζει το αναγνωριστικό του τρέχοντος επιλεγμένου comp για το θυγατρικό έγγραφο, το οποίο θα είναι -1 εάν δεν επιλεγεί κανένα. Τα Comps είναι συνθέσεις μιας διάταξης σελίδας που μπορούν να δημιουργήσουν οι σχεδιαστές. Χρησιμοποιώντας σύνθετα επίπεδα, μπορείτε να δημιουργήσετε, να διαχειριστείτε και να προβάλετε πολλαπλές εκδόσεις μιας διάταξης σε ένα μόνο αρχείο Adobe® Photoshop®. Ένα επίπεδο comp είναι ένα στιγμιότυπο μιας κατάστασης του πίνακα Layers. Οι comps επιπέδων αποθηκεύουν τρεις τύπους επιλογών επιπέδου, αλλά αυτή η ιδιότητα λαμβάνει το αναγνωριστικό επιλογής Layer Comp για το επίπεδο έξυπνου αντικειμένου στο αρχείο PSD. Σύνθεση επιπέδων σε Έξυπνα Αντικείμενα
Λαμβάνει ή ορίζει μια τιμή που υποδεικνύει εάν αυτό το στιλ παραμόρφωσης της παρουσίας είναι προσαρμοσμένο. Εάν είναι αληθές, περιέχει σημεία πλέγματος. Εάν οριστεί σε false, διαγράφει σημεία πλέγματος.
Λαμβάνει το αρχικό αναγνωριστικό του τρέχοντος επιλεγμένου Comp για το θυγατρικό έγγραφο, το οποίο θα είναι -1 εάν δεν επιλεγεί κανένα. Αυτή η ιδιότητα λαμβάνει το αρχικό αναγνωριστικό επιλογής επιπέδου Comp για το επίπεδο έξυπνου αντικειμένου στο αρχείο PSD. Σύνθεση επιπέδων σε Έξυπνα Αντικείμενα
Ο παρακάτω κώδικας δείχνει την υποστήριξη των πόρων SoLEResource, SmartObjectResource και PlacedResource.
[C#]voidAssertIsTrue(boolcondition){if(!condition){thrownewFormatException(string.Format("Expected true"));}}voidAssertAreEqual(objectactual,objectexpected){varareEqual=object.Equals(actual,expected);if(!areEqual&&actualisArray&&expectedisArray){varactualArray=(Array)actual;varexpectedArray=(Array)actual;if(actualArray.Length==expectedArray.Length){for(inti=0;i<actualArray.Length;i++){if(!object.Equals(actualArray.GetValue(i),expectedArray.GetValue(i))){break;}}areEqual=true;}}if(!areEqual){thrownewFormatException(string.Format("Actual value {0} are not equal to expected {1}.",actual,expected));}}voidCheckSmartObjectResourceValues(object[]expectedValue,SmartObjectResourceresource){AssertAreEqual(expectedValue[0],resource.IsCustom);AssertAreEqual(expectedValue[2],resource.PageNumber);AssertAreEqual(expectedValue[3],resource.TotalPages);AssertAreEqual(expectedValue[4],resource.AntiAliasPolicy);AssertAreEqual(expectedValue[5],resource.PlacedLayerType);AssertAreEqual(8,resource.TransformMatrix.Length);AssertAreEqual((double[])expectedValue[6],resource.TransformMatrix);AssertAreEqual(expectedValue[7],resource.Value);AssertAreEqual(expectedValue[8],resource.Perspective);AssertAreEqual(expectedValue[9],resource.PerspectiveOther);AssertAreEqual(expectedValue[10],resource.Top);AssertAreEqual(expectedValue[11],resource.Left);AssertAreEqual(expectedValue[12],resource.Bottom);AssertAreEqual(expectedValue[13],resource.Right);AssertAreEqual(expectedValue[14],resource.UOrder);AssertAreEqual(expectedValue[15],resource.VOrder);AssertAreEqual(expectedValue[16],resource.Crop);AssertAreEqual(expectedValue[17],resource.FrameStepNumerator);AssertAreEqual(expectedValue[18],resource.FrameStepDenominator);AssertAreEqual(expectedValue[19],resource.DurationNumerator);AssertAreEqual(expectedValue[20],resource.DurationDenominator);AssertAreEqual(expectedValue[21],resource.FrameCount);AssertAreEqual(expectedValue[22],resource.Width);AssertAreEqual(expectedValue[23],resource.Height);AssertAreEqual(expectedValue[24],resource.Resolution);AssertAreEqual(expectedValue[25],resource.ResolutionUnit);AssertAreEqual(expectedValue[26],resource.Comp);AssertAreEqual(expectedValue[27],resource.CompId);AssertAreEqual(expectedValue[28],resource.OriginalCompId);AssertAreEqual(expectedValue[29],resource.PlacedId.ToString());AssertAreEqual(expectedValue[30],resource.NonAffineTransformMatrix);if(resource.IsCustom){AssertAreEqual(expectedValue[31],resource.HorizontalMeshPointUnit);AssertAreEqual((double[])expectedValue[32],resource.HorizontalMeshPoints);AssertAreEqual(expectedValue[33],resource.VerticalMeshPointUnit);AssertAreEqual((double[])expectedValue[34],resource.VerticalMeshPoints);}}voidSetNewSmartValues(SmartObjectResourceresource,object[]newValues){// Αυτές οι τιμές δεν αλλάζουμε στον πόροnewValues[0]=resource.IsCustom;newValues[1]=resource.UniqueId.ToString();newValues[5]=resource.PlacedLayerType;newValues[14]=resource.UOrder;newValues[15]=resource.VOrder;newValues[28]=resource.OriginalCompId;// Αυτές οι τιμές πρέπει να αλλάξουν και στο PlLdResource (με το καθορισμένο UniqueId)// και μερικά από αυτά πρέπει να είναι σε συμφωνία με το υπογραμμιζόμενο έξυπνο αντικείμενο στο LinkDataSourceresource.PageNumber=(int)newValues[2];// 2;resource.TotalPages=(int)newValues[3];// 3;resource.AntiAliasPolicy=(int)newValues[4];// 0;resource.TransformMatrix=(double[])newValues[6];resource.Value=(double)newValues[7];// 1.23456789;resource.Perspective=(double)newValues[8];// 0,123456789;resource.PerspectiveOther=(double)newValues[9];// 0,987654321;resource.Top=(double)newValues[10];// -126;resource.Left=(double)newValues[11];// -215;resource.Bottom=(double)newValues[12];// 248;resource.Right=(double)newValues[13];// 145;resource.Crop=(int)newValues[16];// 5;resource.FrameStepNumerator=(int)newValues[17];// 1;resource.FrameStepDenominator=(int)newValues[18];// 601;resource.DurationNumerator=(int)newValues[19];// 2;resource.DurationDenominator=(int)newValues[20];// 602;resource.FrameCount=(int)newValues[21];// 11;resource.Width=(double)newValues[22];// 541;resource.Height=(double)newValues[23];// 249;resource.Resolution=(double)newValues[24];// 144;resource.ResolutionUnit=(UnitTypes)newValues[25];resource.Comp=(int)newValues[26];// 21;resource.CompId=(int)newValues[27];// 22;resource.NonAffineTransformMatrix=(double[])newValues[30];// Αυτό το μοναδικό αναγνωριστικό θα πρέπει να αλλάξει σε αναφορές εάν υπάρχουνresource.PlacedId=newGuid((string)newValues[29]);// "12345678-9abc-def0-9876-54321fecba98");if(resource.IsCustom){resource.HorizontalMeshPointUnit=(UnitTypes)newValues[31];resource.HorizontalMeshPoints=(double[])newValues[32];resource.VerticalMeshPointUnit=(UnitTypes)newValues[33];resource.VerticalMeshPoints=(double[])newValues[34];}// Να είστε προσεκτικοί με ορισμένες παραμέτρους: η αποθηκευμένη εικόνα ενδέχεται να μην είναι αναγνώσιμη από το Adobe® Photoshop®////resource.UOrder = 6;////resource.VOrder = 9;// Μην το αλλάξετε αυτό, διαφορετικά δεν θα μπορείτε να χρησιμοποιήσετε τον ελεύθερο μετασχηματισμό// ή αλλάξτε το έξυπνο αντικείμενο υπογράμμισης σε διανυσματικό τύπο////resource.PlacedLayerType = PlacedLayerType.Vector;// Θα πρέπει να υπάρχει έγκυρος PlLdResource με αυτό το μοναδικό αναγνωριστικό////resource.UniqueId = νέος οδηγός("98765432-10fe-cba0-1234-56789abcdef0");}object[]newSmartValues=newobject[]{true,null,2,3,0,PlacedLayerType.ImageStack,newdouble[8]{12.937922786050663,19.419959734187131,2.85445817782261,1.0540625423957124,7.20861031651307,14.634102808208553,17.292074924741144,4},1.23456789,0.123456789,0.987654321,-126d,-215d,248d,145d,4,4,5,1,601,2,602,11,541d,249d,144d,UnitTypes.Percent,21,22,23,"12345678-9abc-def0-9876-54321fecba98",newdouble[8]{129.937922786050663,195.419959734187131,26.85445817782261,12.0540625423957124,72.20861031651307,147.634102808208553,175.292074924741144,42},UnitTypes.Points,newdouble[16]{0.01d,103.33333333333433d,206.66686666666666d,310.02d,0.20d,103.33333333333533d,206.69666666666666d,310.03d,30.06d,103.33333333336333d,206.66660666666666d,310.04d,04.05d,103.33333333373333d,206.66666166666666d,310.05d},UnitTypes.Distance,newdouble[16]{0.06d,0.07d,0.08d,0.09d,49.066666666666664d,49.266666666666664d,49.566666666666664d,49.766666666666664d,99.133333333333329d,99.433333333333329d,99.633333333333329d,99.833333333333329d,140,141,142,143,},};object[]expectedValues=newobject[]{newobject[]{false,"5867318f-3174-9f41-abca-22f56a75247e",1,1,0x10,PlacedLayerType.Raster,newdouble[8]{0,0,2,0,2,2,0,2},0d,0d,0d,0d,0d,2d,2d,4,4,1,0,600,0,600,1,2d,2d,72d,UnitTypes.Density,-1,-1,-1,"64b3997c-06e0-be40-a349-41acf397c897",newdouble[8]{0,0,2,0,2,2,0,2},}};varsourceFilePath="rgb8_2x2_linked.psd";varoutputPath="rgb8_2x2_linked_output.psd";using(PsdImageimage=(PsdImage)Image.Load(sourceFilePath)){SoLeResourcesoleResource=null;intindex=0;foreach(LayerimageLayerinimage.Layers){foreach(varimageResourceinimageLayer.Resources){varresource=imageResourceasSoLeResource;if(resource!=null){soleResource=resource;varexpectedValue=(object[])expectedValues[index++];AssertAreEqual(expectedValue[1],resource.UniqueId.ToString());CheckSmartObjectResourceValues(expectedValue,resource);SetNewSmartValues(resource,newSmartValues);break;}}}AssertIsTrue(soleResource!=null);image.Save(outputPath,newPsdOptions(image));using(PsdImagesavedImage=(PsdImage)Image.Load(outputPath)){foreach(LayerimageLayerinsavedImage.Layers){foreach(varimageResourceinimageLayer.Resources){varresource=imageResourceasSoLeResource;if(resource!=null){CheckSmartObjectResourceValues(newSmartValues,resource);break;}}}}}