Tạo một Nhóm Layer
Một nhóm layer bao gồm một hoặc nhiều layer và giúp tổ chức các layer tương tự hoặc liên quan. Sử dụng Aspose.PSD cho .NET bạn có thể tạo một nhóm layer. Để thực hiện điều này, một phương thức mới AddLayerGroup đã được thêm vào trong class PsdImage để thêm nhóm layer.
Các bước để tạo nhóm layer đơn giản như sau:
- Tạo một phiên bản hình ảnh bằng cách sử dụng class PsdImage với chiều rộng, chiều cao và tùy chọn hình ảnh cụ thể.
- Tạo một LayerGroup với tên nhóm và chỉ mục cụ thể.
- Tạo một phiên bản của class Layer và gán hình ảnh PSD cho nó.
- Thêm layer đã tạo vào nhóm layer bằng cách sử dụng phương thức AddLayer được tiết lộ bởi class LayerGroup.
- Lưu kết quả.
Đoạn mã sau cho bạn biết cách tạo một nhóm layer.
// 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"); | |
} |
Đổi tên Layer
Bạn có thể sử dụng bất kỳ tên nào bạn muốn, nhưng thực hành thông thường là sử dụng một mô tả chung về đối tượng hoặc phần tử đang ở trên layer đó. Bài viết này thể hiện cách bạn có thể đổi tên của một layer bằng cách sử dụng Aspose.PSD cho .NET. Để thực hiện điều này, một thuộc tính mới DisplayName đã được thêm vào trong class Layer để hiển thị tên layer đúng cách. Đã được quan sát rằng khi Photoshop lưu một tên layer bằng cách sử dụng thuộc tính Name, thì các ký tự Hàn Quốc được lưu trữ dưới dạng byte 63'?' trong ASCII. Vì vậy, nếu bạn muốn hiển thị tên layer đúng cách thì hãy sử dụng thuộc tính DisplayName vì thuộc tính Name không hỗ trợ các ký tự Hàn.
Đoạn mã mẫu sau cho thấy cách bạn có thể đổi tên của một layer.
// 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"); | |
} |
Hỗ trợ của Linked Layers
Liên kết các layer tương tự như việc nhóm các layer. Nếu bạn liên kết hai hoặc nhiều layer thì nó sẽ cho phép bạn thực hiện một số thay đổi cho tất cả các layer được liên kết. Ví dụ, nếu bạn áp dụng các biến đổi cho một layer thì nó sẽ được áp dụng cho tất cả các layer khác được liên kết. Bài viết này thể hiện cách bạn có thể lấy và hủy liên kết giữa các layer bằng cách sử dụng 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"); | |
} |