Class SoLdResource

SoLdResource class

يحدد فئة SoLdResource التي تحتوي على معلومات حول طبقة كائن ذكية في ملف PSD. يستخدم لدعم طبقات الكائنات الذكية في صور Adobe® Photoshop® .

public class SoLdResource : SmartObjectResource

المنشئون

اسموصف
SoLdResource()يقوم بتهيئة مثيل جديد لملفSoLdResource class. تم تصميم المُنشئ الافتراضي هذا للاستخدام بواسطةSoLdResourceLoader . استخدمSmartResourceCreator لإنشاء فئات SoLdResource.
SoLdResource(Guid, bool, bool)يقوم بتهيئة مثيل جديد لملفSoLdResource class. من الضروري تعيين خاصية العناصر أو استدعاء InitializeItems () للحصول على مثيل جاهز . تم تصميم هذا المُنشئ للاستخدام بواسطةSmartResourceCreator وفي اختبارات الوحدة . استخدمSmartResourceCreator لإنشاء فئات SoLdResource.

الخصائص

اسموصف
override AntiAliasPolicy { get; set; }الحصول على أو تعيين سياسة مكافحة الاسم المستعار لبيانات طبقة الكائن الذكي في صورة PSD.
Bottom { get; set; }الحصول على أو تحديد الموقع السفلي للطبقة الموضوعة في صورة PSD.
Bounds { get; set; }الحصول على أو تعيين حدود الطبقة الموضوعة في ملف PSD.
Comp { get; set; }الحصول على أو تعيين قيمة comp لبيانات طبقة الكائن الذكي في ملف PSD.تراكبات الطبقة في الكائنات الذكية
CompId { get; set; }الحصول على أو تعيين معرف التركيب المحدد حاليًا للمستند الفرعي ، والذي سيكون -1 إذا لم يتم تحديد أي منها . التركيبات هي تركيبات لتخطيط الصفحة والتي يمكن للمصممين إنشاؤها. باستخدام تركيبات الطبقة ، يمكنك إنشاء إصدارات متعددة من التخطيط وإدارتها وعرضها في ملف Adobe® Photoshop® واحد. تراكب الطبقة هو لقطة لحالة لوحة Layers. تقوم تركيبات الطبقة بحفظ ثلاثة أنواع من خيارات الطبقة ولكن تحصل هذه الخاصية على معرف تحديد تراكب الطبقة لطبقة الكائن الذكي في ملف PSD.تراكبات الطبقة في الكائنات الذكية
Crop { get; set; }الحصول على أو تعيين اقتصاص بيانات طبقة الكائن الذكي في صورة PSD.
DurationDenominator { get; set; }الحصول على أو تحديد مقام المدة.
DurationNumerator { get; set; }الحصول على بسط المدة أو تعيينه.
FrameCount { get; set; }الحصول على أو تعيين عدد الإطارات لبيانات طبقة الكائن الذكية في ملف PSD.
FrameStepDenominator { get; set; }الحصول على أو تعيين مقام خطوة الإطار.
FrameStepNumerator { get; set; }الحصول على أو تعيين بسط خطوة الإطار.
Height { get; set; }الحصول على الارتفاع أو تحديده .
HorizontalMeshPoints { get; set; }الحصول على أو تعيين نقاط الشبكة الأفقية للطبقة الموضوعة في ملف PSD.
HorizontalMeshPointUnit { get; set; }الحصول على أو تعيين وحدة قياس نقاط الشبكة الأفقية .
IsCustom { get; set; }الحصول على قيمة أو تعيينها للإشارة إلى ما إذا كان نمط التواء في المثيل مخصصًا أم لا. إذا تم الضبط على خطأ ، فإنه يمحو نقاط الشبكة.
override Items { get; set; }الحصول على أو تعيين عناصر واصف بيانات طبقة الكائن الذكي في ملف PSD.
override Key { get; }يحصل على مفتاح مورد طبقة الكائن الذكي SoLd.
Left { get; set; }الحصول على أو تحديد الموقع الأيسر للطبقة الموضوعة في ملف PSD.
override Length { get; }الحصول على طول مورد الكائن الذكي بالبايت.
NonAffineTransformMatrix { get; set; }الحصول على أو تعيين مصفوفة التحويل غير الأفيني لبيانات طبقة الكائن الذكي في ملف PSD.
OriginalCompId { get; }يحصل على المعرف الأصلي لـ Comp المحدد حاليًا للمستند الفرعي ، والذي سيكون -1 إذا لم يتم تحديد أي منها . تحصل هذه الخاصية على معرف تحديد Comp للطبقة الأصلية لطبقة الكائن الذكي في ملف PSD.تراكبات الطبقة في الكائنات الذكية
override PageNumber { get; set; }الحصول على أو تعيين رقم صفحة بيانات طبقة الكائن الذكي في ملف PSD.
Perspective { get; set; }الحصول على أو تعيين قيمة المنظور للطبقة الموضوعة في ملف PSD.
PerspectiveOther { get; set; }الحصول على أو تحديد قيمة المنظور الأخرى للطبقة الموضوعة في ملف PSD.
PlacedId { get; set; }الحصول على أو تعيين المعرف الفريد لبيانات طبقة الكائن الذكي هذه في صورة PSD.
override PlacedLayerType { get; set; }الحصول على أو تعيين نوع بيانات طبقة الكائن الذكي في ملف PSD.
override PsdVersion { get; }يحصل على الحد الأدنى من إصدار psd المطلوب لمورد الكائن الذكي. 0 يشير إلى عدم وجود قيود.
Resolution { get; set; }الحصول على أو تعيين دقة بيانات طبقة الكائن الذكي في ملف PSD.
ResolutionUnit { get; set; }الحصول على أو تعيين وحدة قياس الدقة لبيانات طبقة الكائن الذكي في ملف PSD.
Right { get; set; }الحصول على أو تحديد الموقع الصحيح للطبقة الموضوعة في ملف PSD.
override Signature { get; }الحصول على توقيع مورد الكائن الذكي.
Top { get; set; }الحصول على أو تحديد الموقع العلوي للطبقة الموضوعة في صورة PSD.
override TotalPages { get; set; }الحصول على أو تعيين إجمالي عدد صفحات بيانات طبقة الكائن الذكي في ملف PSD.
override TransformMatrix { get; set; }الحصول على أو تعيين مصفوفة التحويل لبيانات طبقة الكائن الذكي في ملف PSD.
override UniqueId { get; set; }الحصول على أو تعيين المعرف الفريد العام لبيانات طبقة الكائن الذكيSmartObjectResource في صورة PSD.
UOrder { get; set; }الحصول على أو تعيين قيمة طلب U للطبقة الموضوعة في ملف PSD.
Value { get; set; }الحصول على أو تعيين قيمة التواء للطبقة الموضوعة في صورة PSD.
Version { get; }يحصل على نسخة الطبقة الموضوعة في ملف PSD ، عادة 3.
VerticalMeshPoints { get; set; }الحصول على أو تعيين نقاط الشبكة الأفقية للطبقة الموضوعة في ملف PSD.
VerticalMeshPointUnit { get; set; }الحصول على أو تحديد وحدة قياس نقاط الشبكة العمودية.
VOrder { get; set; }الحصول على أو تعيين قيمة ترتيب V للطبقة الموضوعة في ملف PSD.
Width { get; set; }الحصول على العرض أو تحديده .

طُرق

اسموصف
override Save(StreamContainer, int)يحفظ مورد الكائن الذكي في حاوية التدفق المحددة.
override ToString()إرجاع أString الذي يمثل هذا المثال.

مجالات

اسموصف
const TypeToolKeyمفتاح معلومات أداة النوع: “SoLd” .

أمثلة

يوضح التعليمة البرمجية التالية دعم مورد SoLdResource.

[C#]

// يوضح هذا المثال كيفية الحصول على أو تعيين خصائص بيانات طبقة الكائن الذكية لملف PSD.

void AssertAreEqual(object actual, object expected)
{
    var areEqual = object.Equals(actual, expected);
    if (!areEqual && actual is Array && expected is Array)
    {
        var actualArray = (Array)actual;
        var expectedArray = (Array)actual;
        if (actualArray.Length == expectedArray.Length)
        {
            for (int i = 0; i < actualArray.Length; i++)
            {
                if (!object.Equals(actualArray.GetValue(i), expectedArray.GetValue(i)))
                {
                    break;
                }
            }

            areEqual = true;
        }
    }

    if (!areEqual)
    {
        throw new FormatException(
            string.Format("Actual value {0} are not equal to expected {1}.", actual, expected));
    }
}

var sourceFilePath = "LayeredSmartObjects8bit2.psd";
var outputFilePath = "LayeredSmartObjects8bit2_output.psd";
var expectedValues = new object[]
{
    new object[]
    {
        true,
        "76f05a3b-7523-5e42-a1bb-27f4735bffa0",
        1,
        1,
        0x10,
        PlacedLayerType.Raster,
        new double[8]
        {
            29.937922786050663,
            95.419959734187131,
            126.85445817782261,
            1.0540625423957124,
            172.20861031651307,
            47.634102808208553,
            75.292074924741144,
            142
        },
        0.0,
        0.0,
        0.0,
        0d,
        0d,
        149d,
        310d,
        4,
        4,
        1,
        0,
        600,
        0,
        600,
        1,
        310d,
        149d,
        72d,
        UnitTypes.Density,
        -1,
        -1,
        -1,
        "d3388655-19e4-9742-82f2-f553bb01046a",
        new double[8]
        {
            29.937922786050663,
            95.419959734187131,
            126.85445817782261,
            1.0540625423957124,
            172.20861031651307,
            47.634102808208553,
            75.292074924741144,
            142
        },
        UnitTypes.Pixels,
        new double[16]
        {
            0.0d, 103.33333333333333d, 206.66666666666666d, 310.0d,
            0.0d, 103.33333333333333d, 206.66666666666666d, 310.0d,
            0.0d, 103.33333333333333d, 206.66666666666666d, 310.0d,
            0.0d, 103.33333333333333d, 206.66666666666666d, 310.0d
        },
        UnitTypes.Pixels,
        new double[16]
        {
            0.0d, 0.0d, 0.0d, 0.0d,
            49.666666666666664d, 49.666666666666664d, 49.666666666666664d, 49.666666666666664d,
            99.333333333333329d, 99.333333333333329d, 99.333333333333329d, 99.333333333333329d,
            149, 149, 149, 149,
        },
    },
    new object[]
    {
        true,
        "cf0477a8-8f92-ac4f-9462-f78e26234851",
        1,
        1,
        0x10,
        PlacedLayerType.Raster,
        new double[8]
        {
            37.900314592235681,
            -0.32118219433001371,
            185.94210608826535,
            57.7076819802063,
            153.32047433609358,
            140.9311755779743,
            5.2786828400639294,
            82.902311403437977,
        },
        0.0,
        0.0,
        0.0,
        0d,
        0d,
        721d,
        1280d,
        4,
        4,
        1,
        0,
        600,
        0,
        600,
        1,
        1280d,
        721d,
        72d,
        UnitTypes.Density,
        -1,
        -1,
        -1,
        "625cc4b9-2c5f-344f-8636-03caf2bd3489",
        new double[8]
        {
            37.900314592235681,
            -0.32118219433001371,
            185.94210608826535,
            57.7076819802063,
            153.32047433609358,
            140.9311755779743,
            5.2786828400639294,
            82.902311403437977,
        },
        UnitTypes.Pixels,
        new double[16]
        {
            0.0, 426.66666666666663, 853.33333333333326, 1280,
            0.0, 426.66666666666663, 853.33333333333326, 1280,
            0.0, 426.66666666666663, 853.33333333333326, 1280,
            0.0, 426.66666666666663, 853.33333333333326, 1280,
        },
        UnitTypes.Pixels,
        new double[16]
        {
            0.0, 0.0, 0.0, 0.0,
            240.33333333333331, 240.33333333333331, 240.33333333333331, 240.33333333333331,
            480.66666666666663, 480.66666666666663, 480.66666666666663, 480.66666666666663,
            721, 721, 721, 721,
        },
        0,
        0
    }
};

using (PsdImage image = (PsdImage)Image.Load(sourceFilePath))
{
    SoLdResource resource = null;
    int index = 0;
    foreach (Layer imageLayer in image.Layers)
    {
        foreach (var imageResource in imageLayer.Resources)
        {
            resource = imageResource as SoLdResource;
            if (resource != null)
            {
                var expectedValue = (object[])expectedValues[index++];
                AssertAreEqual(expectedValue[0], resource.IsCustom);
                AssertAreEqual(expectedValue[1], resource.UniqueId.ToString());
                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((IEnumerable)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);
                    var temp = resource.VerticalMeshPoints;
                    resource.VerticalMeshPoints = resource.HorizontalMeshPoints;
                    resource.HorizontalMeshPoints = temp;
                }

                // يجب تغيير هذه القيم في PlLdResource (مع UniqueId المحدد) أيضًا
                // ويجب أن يكون بعضها متوافقًا مع الكائن الذكي الذي تحته خط في LinkDataSource
                resource.PageNumber = 2;
                resource.TotalPages = 3;
                resource.AntiAliasPolicy = 0;
                resource.Value = 1.23456789;
                resource.Perspective = 0.123456789;
                resource.PerspectiveOther = 0.987654321;
                resource.Top = -126;
                resource.Left = -215;
                resource.Bottom = 248;
                resource.Right = 145;
                resource.Crop = 4;
                resource.FrameStepNumerator = 1;
                resource.FrameStepDenominator = 601;
                resource.DurationNumerator = 2;
                resource.DurationDenominator = 602;
                resource.FrameCount = 11;
                resource.Width = 541;
                resource.Height = 249;
                resource.Resolution = 144;
                resource.Comp = 21;
                resource.CompId = 22;
                resource.TransformMatrix = new double[8]
                {
                    12.937922786050663,
                    19.419959734187131,
                    2.85445817782261,
                    1.0540625423957124,
                    7.20861031651307,
                    14.634102808208553,
                    17.292074924741144,
                    4
                };
                resource.NonAffineTransformMatrix = new double[8]
                {
                    129.937922786050663,
                    195.419959734187131,
                    26.85445817782261,
                    12.0540625423957124,
                    72.20861031651307,
                    147.634102808208553,
                    175.292074924741144,
                    42
                };

                // يجب تغيير هذا المعرف الفريد في المراجع إن وجدت
                resource.PlacedId = new Guid("12345678-9abc-def0-9876-54321fecba98");

                // كن حذرًا مع بعض المعلمات: قد تصبح الصورة غير قابلة للقراءة بواسطة Adobe® Photoshop®
                ////resource.UOrder = 6 ;
                ////resource.VOrder = 9 ;

                // لا تقم بتغيير هذا وإلا فلن تتمكن من استخدام التحويل المجاني
                // أو قم بتغيير الكائن الذكي الذي تحته خط إلى نوع المتجه
                ////resource.PlacedLayerType = PlacedLayerType.Vector ;

                // يجب أن يكون هناك PlLdResource صالحًا بهذا المعرف الفريد
                ////resource.UniqueId = دليل جديد ("98765432-10fe-cba0-1234-56789abcdef0") ;

                break;
            }
        }
    }

    AssertAreEqual(true, resource != null);
    image.Save(outputFilePath, new PsdOptions(image));
}

أنظر أيضا