Katmanlarla Çalışma

Bir Katman Grubu Oluşturma

Bir katman grubu, bir veya daha fazla katmandan oluşur ve benzer veya ilgili katmanları düzenlemeye yardımcı olur. Aspose.PSD for .NET kullanarak bir katman grubu oluşturabilirsiniz. Bu amaçla, bir yeni yöntem olan AddLayerGroup bir PsdImage sınıfına katman grubunu eklemek için eklenmiştir.

Katman gruplarını oluşturmanın adımları aşağıdaki gibidir:

  • Belirtilen genişlik, yükseklik ve görüntü seçenekleriyle PsdImage sınıfı kullanarak bir görüntü örneği oluşturun.
  • Belirtilen grup adı ve dizinle bir LayerGroup oluşturun.
  • Layer sınıfının bir örneğini oluşturun ve PSD görüntüsünü atayın.
  • Oluşturulan katmanı LayerGroup sınıfı tarafından sunulan AddLayer yöntemiyle katman grubuna ekleyin.
  • Sonuçları kaydedin.

Aşağıdaki kod örneği, bir katman grubu nasıl oluşturulacağını göstermektedir.

// 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");
}

Bir Katmanın Adını Değiştirme

İstediğiniz herhangi bir adı kullanabilirsiniz, ancak tipik uygulama o katmanda bulunan nesne veya öğenin genel bir tanımını kullanmaktır. Bu makale, Aspose.PSD for .NET’i kullanarak bir katmanın adını değiştirmeyi göstermektedir. Bu amaçla, Layer sınıfına katman adını düzgün bir şekilde görüntülemek için DisplayName adında yeni bir özellik eklenmiştir. Görülmüştür ki Photoshop, bir katman adını Name özelliğini kullanarak kaydettiğinde, Kore karakterleri ASCII’de bayt 63'?' olarak depolanır. Bu nedenle bir katman adını düzgün bir şekilde görüntülemek istiyorsanız DisplayName özelliğini kullanın çünkü Name özelliği Kore karakterlerini desteklemez.

Aşağıdaki kod örneği, bir katmanın adını nasıl değiştirebileceğinizi gösterir.

// 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");
}

Bağlantılı Katmanların Desteklenmesi

Katmanları bağlamak, katmanları gruplamaya benzerdir. İki veya daha fazla katmanı bağlarsanız, bağlı katmanların her ikisine de belirli değişiklikler yapmanıza olanak tanır. Örneğin, bir katmana dönüşümler uygularsanız, tüm diğer bağlantılı katmanlara da uygulanacaktır. Bu makale, Aspose.PSD kullanarak bağlantılı katmanları nasıl alabileceğinizi ve bağlantılı katmanları nasıl bağlayabileceğinizi göstermektedir.

// 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");
}