العمل مع الطبقات

إنشاء مجموعة طبقات

تتكون مجموعة الطبقات من طبقة أو أكثر وتساعد في تنظيم الطبقات المماثلة أو ذات الصلة. باستخدام Aspose.PSD لـ .NET يمكنك إنشاء مجموعة طبقات. لهذا الغرض، تمت إضافة طريقة جديدة AddLayerGroup في فئة PsdImage لإضافة المجموعة الطبقية.

الخطوات اللازمة لإنشاء مجموعات الطبقات بسيطة كما يلي:

  • قم بإنشاء نسخة من الصورة باستخدام فئة PsdImage مع تحديد العرض والارتفاع وخيارات الصورة.
  • قم بإنشاء LayerGroup بتحديد اسم المجموعة والفهرس.
  • قم بإنشاء نسخة من الفئة Layer وقم بتعيين صورة PSD لها.
  • أضف الطبقة التي تم إنشاؤها إلى مجموعة الطبقات باستخدام الطريقة AddLayer المكشوفة بواسطة فئة LayerGroup.
  • احفظ النتائج.

تُظهر المقطع البرمجي التالي كيفية إنشاء مجموعة طبقات.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
string inputFile = dataDir + "ButtonTemp.psd";
var createOptions = new PsdOptions();
createOptions.Source = new FileCreateSource(inputFile, false);
createOptions.Palette = new PsdColorPalette(new Color[] { Color.Green });
using (var psdImage = (PsdImage)Image.Create(createOptions, 500, 500))
{
LayerGroup group1 = psdImage.AddLayerGroup("Group 1", 0, true);
Layer layer1 = new Layer(psdImage);
layer1.Name = "Layer 1";
group1.AddLayer(layer1);
LayerGroup group2 = group1.AddLayerGroup("Group 2", 1);
Layer layer2 = new Layer(psdImage);
layer2.Name = "Layer 2";
group2.AddLayer(layer2);
Layer layer3 = new Layer(psdImage);
layer3.Name = "Layer 3";
group2.AddLayer(layer3);
Layer layer4 = new Layer(psdImage);
layer4.Name = "Layer 4";
group1.AddLayer(layer4);
psdImage.Save(dataDir + "LayerGroups_out.psd");
}

إعادة تسمية طبقة

يمكنك استخدام أي اسم ترغب فيه، ولكن الممارسة النموذجية هي استخدام وصف عام للكائن أو العنصر الذي يتواجد على تلك الطبقة. توضح هذه المقالة كيف يمكنك تغيير اسم الطبقة باستخدام Aspose.PSD لـ .NET. لهذا الغرض، تمت إضافة خاصية جديدة DisplayName في فئة Layer لعرض اسم الطبقة بشكل صحيح. لقد لُوحظ أنه عندما يحفظ Photoshop اسم طبقة باستخدام خاصية Name، يتم تخزين الأحرف الكورية كبايت 63'?' في ASCII. لذلك، إذا كنت ترغب في عرض اسم الطبقة بشكل صحيح، استخدم خاصية DisplayName لأن الخاصية Name لا تدعم الأحرف الكورية.

يوضح المثال البرمجي التالي كيفية إعادة تسمية طبقة.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir_PSD();
// make changes in layer names and save it
using (var image = (PsdImage)Image.Load(dataDir + "Korean_layers.psd"))
{
for (int i = 0; i < image.Layers.Length; i++)
{
var layer = image.Layers[i];
// set new value into DisplayName property
layer.DisplayName += "_changed";
}
image.Save(dataDir + "Korean_layers_output.psd");
}

دعم الطبقات المرتبطة

ربط الطبقات يشبه تجميع الطبقات. إذا كنت تربط طبقتين أو أكثر فإنه سيسمح لك بإجراء تغييرات معينة على كل من الطبقات المرتبطة. على سبيل المثال، إذا قمت بتطبيق التحويلات على طبقة واحدة، فسيتم تطبيقها على جميع الطبقات المرتبطة الأخرى أيضًا. توضح هذه المقالة كيفية الحصول على الطبقات المرتبطة وإلغاء ربطها باستخدام Aspose.PSD.

// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET
{
Layer[] layers = psd.Layers;
// link all layers in one linked group
short layersLinkGroupId = psd.LinkedLayersManager.LinkLayers(layers);
// gets id for one layer
short linkGroupId = psd.LinkedLayersManager.GetLinkGroupId(layers[0]);
if (layersLinkGroupId != linkGroupId)
{
throw new Exception("layersLinkGroupId and linkGroupId are not equal.");
}
// gets all linked layers by link group id.
Layer[] linkedLayers = psd.LinkedLayersManager.GetLayersByLinkGroupId(linkGroupId);
// unlink each layer from group
foreach (var linkedLayer in linkedLayers)
{
psd.LinkedLayersManager.UnlinkLayer(linkedLayer);
}
// retrieves NULL for a link group ID that has no layers in the group.
linkedLayers = psd.LinkedLayersManager.GetLayersByLinkGroupId(linkGroupId);
if (linkedLayers != null)
{
throw new Exception("The linkedLayers field is not NULL.");
}
psd.Save(dataDir + "LinkedLayerexample_output.psd");
}