Werken met Lagen

Een Laaggroep Maken

Een laaggroep bestaat uit één of meer lagen en het helpt bij het organiseren van vergelijkbare of gerelateerde lagen. Met Aspose.PSD voor .NET kunt u een laaggroep maken. Hiervoor is een nieuwe methode AddLayerGroup toegevoegd aan de PsdImage klasse om de laaggroep toe te voegen.

De stappen om laaggroepen te maken zijn als volgt:

  • Maak een instantie van een afbeelding met de PsdImage klasse met de gespecificeerde breedte, hoogte en afbeeldingsopties.
  • Maak een LayerGroup met de gespecificeerde groepsnaam en index.
  • Maak een instantie van de Layer klasse en wijs de PSD-afbeelding eraan toe.
  • Voeg de gemaakte laag toe aan de laaggroep met behulp van de AddLayer methode die wordt blootgesteld door de LayerGroup klasse.
  • Sla de resultaten op.

De volgende codefragment laat zien hoe u een laaggroep kunt maken.

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

Een Laag Hernoemen

U kunt elke naam gebruiken die u maar wilt, maar de gebruikelijke praktijk is om een algemene beschrijving te geven van het object of element dat op die laag staat. In dit artikel wordt gedemonstreerd hoe u de naam van een laag kunt wijzigen met behulp van Aspose.PSD voor .NET. Hiervoor is een nieuwe eigenschap DisplayName toegevoegd aan de Layer klasse om een laagnaam correct weer te geven. Het is waargenomen dat wanneer Photoshop een laagnaam opslaat met behulp van de Name eigenschap, dan worden Koreaanse karakters opgeslagen als byte 63'?' in ASCII. Dus, als u een laagnaam correct wilt weergeven, gebruik dan de DisplayName eigenschap omdat de Name eigenschap geen Koreaanse tekens ondersteunt.

Het volgende codevoorbeeld laat zien hoe u een laag kunt hernoemen.

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

Ondersteuning van Gekoppelde Lagen

Het koppelen van lagen is vergelijkbaar met het groeperen van lagen. Als u twee of meer lagen koppelt, kunt u bepaalde wijzigingen aanbrengen in beide gekoppelde lagen. Bijvoorbeeld, als u transformaties toepast op één laag, worden deze toegepast op alle andere gekoppelde lagen. Dit artikel laat zien hoe u gekoppelde lagen kunt krijgen en ontkoppelen met behulp van 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");
}