תמיכה בשכבות מילוי
שכבות מילוי עם מילוי תבנית
מאמר זה מדגים איך למלא את שכבת ה- PSDעם מילוי תבנית. תבנית היא תמונה, צבע, צל או קו שמשמש למילוי שטח של תמונה. נא להשתמש ב- Aspose.PSD.FileFormats.Psd.Layers.FillLayer כדי להוסיף תבנית בשכבת ה- PSD. קטעי הקוד הבאים טוענים קובץ PSD, גושי הגישה למחלקת Filllayer ומגדירים את התבנית באמצעות נכסי ה-PatternFillSettings.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
// Add support of Fill layers: Pattern | |
string sourceFileName = dataDir + "PatternFillLayer.psd"; | |
string exportPath = dataDir + "PatternFillLayer_Edited.psd"; | |
double tolerance = 0.0001; | |
var im = (PsdImage)Image.Load(sourceFileName); | |
using (im) | |
{ | |
foreach (var layer in im.Layers) | |
{ | |
if (layer is FillLayer) | |
{ | |
FillLayer fillLayer = (FillLayer)layer; | |
PatternFillSettings fillSettings = (PatternFillSettings)fillLayer.FillSettings; | |
if (fillSettings.HorizontalOffset != -46 || | |
fillSettings.VerticalOffset != -45 || | |
fillSettings.PatternId != "a6818df2-7532-494e-9615-8fdd6b7f38e5" || | |
fillSettings.PatternName != "$$$/Presets/Patterns/OpticalSquares=Optical Squares" || | |
fillSettings.AlignWithLayer != true || | |
fillSettings.Linked != true || | |
fillSettings.PatternHeight != 64 || | |
fillSettings.PatternWidth != 64 || | |
fillSettings.PatternData.Length != 4096 || | |
Math.Abs(fillSettings.Scale - 50) > tolerance) | |
{ | |
throw new Exception("PSD Image was read wrong"); | |
} | |
// Editing | |
fillSettings.Scale = 300; | |
fillSettings.HorizontalOffset = 2; | |
fillSettings.VerticalOffset = -20; | |
fillSettings.PatternData = new int[] | |
{ | |
Color.Red.ToArgb(), Color.Blue.ToArgb(), Color.Blue.ToArgb(), | |
Color.Blue.ToArgb(), Color.Red.ToArgb(), Color.Blue.ToArgb(), | |
Color.Blue.ToArgb(), Color.Blue.ToArgb(), Color.Red.ToArgb() | |
}; | |
fillSettings.PatternHeight = 3; | |
fillSettings.PatternWidth = 3; | |
fillSettings.AlignWithLayer = false; | |
fillSettings.Linked = false; | |
fillSettings.PatternId = Guid.NewGuid().ToString(); | |
fillLayer.Update(); | |
break; | |
} | |
} | |
im.Save(exportPath); | |
} |
להלן דוגמה נוספת המדגימה כיצד Aspose.PSD מציג את התבנית באמצעות FillLayer ו-IPatternFillSettings.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string destName = dataDir + "PatternFillLayer_out.psd"; | |
// Load an existing image into an instance of PsdImage class | |
using (var image = (PsdImage)Image.Load(sourceFile)) | |
{ | |
foreach (var layer in image.Layers) | |
{ | |
if (layer is FillLayer) | |
{ | |
var fillLayer = (FillLayer)layer; | |
var settings = (IPatternFillSettings)fillLayer.FillSettings; | |
settings.HorizontalOffset = -5; | |
settings.VerticalOffset = 12; | |
settings.Scale = 300; | |
settings.Linked = true; | |
settings.PatternData = new int[] | |
{ | |
Color.Black.ToArgb(), Color.Red.ToArgb(), | |
Color.Green.ToArgb(), Color.Blue.ToArgb(), | |
Color.White.ToArgb(), Color.AliceBlue.ToArgb(), | |
Color.Violet.ToArgb(), Color.Chocolate.ToArgb(), | |
Color.IndianRed.ToArgb(), Color.DarkOliveGreen.ToArgb(), | |
Color.CadetBlue.ToArgb(), Color.YellowGreen.ToArgb(), | |
Color.Black.ToArgb(), Color.Azure.ToArgb(), | |
Color.ForestGreen.ToArgb(), Color.Sienna.ToArgb(), | |
}; | |
settings.PatternHeight = 4; | |
settings.PatternWidth = 4; | |
settings.PatternName = "$$$/Presets/Patterns/ColorfulSquare=Colorful Square New\0"; | |
settings.PatternId = Guid.NewGuid().ToString() + "\0"; | |
fillLayer.Update(); | |
break; | |
} | |
} | |
image.Save(destName, new PsdOptions(image)); | |
} |
שכבות מילוי עם מילוי גרסיאלי
מאמר זה מדגים את השימוש במילוי גרסיאלי כדי למלא את שכבת ה- PSD. ממשקי ה- Aspose.PSD חשפו שיטות יעילות וקלות לשים את המטרה הזו לגבי. ה- Aspose.PSD חשף את המחלקות GradientColorPoint ו-GradientTransparencyPoint כדי להוסיף אפקט גרסיאלי לשכבה.
`השלבים כדי למלא את שכבת ה- PSD במילוי עם גרסיאלי הם כל כך פשוטים כפי שמוצג למטה:
- טוען קובץ PSD כתמונה באמצעות שיטת המפעיל Load שנחשפה על ידי המחלקה Image.
- מגדיר נכסי הגדרות של אובייקט FillLayer.
- יוצר רשימת ColorPoints עם צבעים נדרשים ועמדות של צבע.
- יוצר רשימת נקודות שקיפות עם שקיפות נדרשת ועמדת נקודת השקיפות.
- קורא לשיטת FillLayer.Update
- שומר את התוצאות.
הקטע הבא מראה איך להוסיף מילוי גרסיאלי למילוי שכבת PSD.
// 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(); | |
string sourceFileName = dataDir + "ComplexGradientFillLayer.psd"; | |
string outputFile = dataDir + "ComplexGradientFillLayer_output.psd"; | |
var image = (PsdImage)Image.Load(sourceFileName); | |
using (image) | |
{ | |
foreach (var layer in image.Layers) | |
{ | |
if (layer is FillLayer) | |
{ | |
var fillLayer = (FillLayer)layer; | |
if (fillLayer.FillSettings.FillType != FillType.Gradient) | |
{ | |
throw new Exception("Wrong Fill Layer"); | |
} | |
var settings = (IGradientFillSettings)fillLayer.FillSettings; | |
if ( | |
Math.Abs(settings.Angle - 45) > 0.25 || | |
settings.Dither != true || | |
settings.AlignWithLayer != false || | |
settings.Reverse != false || | |
Math.Abs(settings.HorizontalOffset - (-39)) > 0.25 || | |
Math.Abs(settings.VerticalOffset - (-5)) > 0.25 || | |
settings.TransparencyPoints.Length != 3 || | |
settings.ColorPoints.Length != 2 || | |
Math.Abs(100.0 - settings.TransparencyPoints[0].Opacity) > 0.25 || | |
settings.TransparencyPoints[0].Location != 0 || | |
settings.TransparencyPoints[0].MedianPointLocation != 50 || | |
settings.ColorPoints[0].Color != Color.FromArgb(203, 64, 140) || | |
settings.ColorPoints[0].Location != 0 || | |
settings.ColorPoints[0].MedianPointLocation != 50) | |
{ | |
throw new Exception("Gradient Fill was not read correctly"); | |
} | |
settings.Angle = 0.0; | |
settings.Dither = false; | |
settings.AlignWithLayer = true; | |
settings.Reverse = true; | |
settings.HorizontalOffset = 25; | |
settings.VerticalOffset = -15; | |
var colorPoints = new List<IGradientColorPoint>(settings.ColorPoints); | |
var transparencyPoints = new List<IGradientTransparencyPoint>(settings.TransparencyPoints); | |
colorPoints.Add(new GradientColorPoint() | |
{ | |
Color = Color.Violet, | |
Location = 4096, | |
MedianPointLocation = 75 | |
}); | |
colorPoints[1].Location = 3000; | |
transparencyPoints.Add(new GradientTransparencyPoint() | |
{ | |
Opacity = 80.0, | |
Location = 4096, | |
MedianPointLocation = 25 | |
}); | |
transparencyPoints[2].Location = 3000; | |
settings.ColorPoints = colorPoints.ToArray(); | |
settings.TransparencyPoints = transparencyPoints.ToArray(); | |
fillLayer.Update(); | |
image.Save(outputFile, new PsdOptions(image)); | |
break; | |
} | |
} | |
} |
להלן דוגמה נוספת המשתמשת ב- GradientFillSettings.GradientType **** כדי למלא את שכבת ה- PSD במילוי גרסיאלי. ה- Aspose.PSD תומך בסוגי הגרסיאל הבאים דרך תיאור הסוג הגרסיאלי:
- GradientType.Linear: מהגרסיאל הלינארי, ההעברות של הצבע מהגוון התחילתי לסופי בקו ישר.
- GradientType.Radial: בגרסיאל מעגלי, הצבעים מתפשטים מנקודת ההתחלה בתבנית מעגלית.
- GradientType.Angle: בגרסיאל זוויתית, הגרסיאל נסבב נגד כיוון השעון סביב נקודת ההתחלה.
- GradientType.Reflected: בגרסיאל שהתקשר, הצבע משתקף שני צידי נקודת ההתחלה.
- GradientType.Diamond: הגרסיאל יוצר צורה מעויינת מנקד ההתחלה.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string fileName = dataDir + "FillLayerGradient.psd"; | |
GradientType[] gradientTypes = new[] | |
{ | |
GradientType.Linear, GradientType.Radial, GradientType.Angle, GradientType.Reflected, GradientType.Diamond | |
}; | |
using (var image = Image.Load(fileName)) | |
{ | |
PsdImage psdImage = (PsdImage)image; | |
FillLayer fillLayer = (FillLayer)psdImage.Layers[0]; | |
GradientFillSettings fillSettings = (GradientFillSettings)fillLayer.FillSettings; | |
foreach (var gradientType in gradientTypes) | |
{ | |
fillSettings.GradientType = gradientType; | |
fillLayer.Update(); | |
psdImage.Save(fileName + "_" + gradientType.ToString() + ".png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha }); | |
} | |
} |
תמיכה במאפיין הקניית שכבות עבור שכבת מילוי גרסיאלית
מאמר זה מדגים כיצד לקנות את שכבת המילוי עם מילוי גרסיאלי באמצעות Aspose.PSD עבור .NET. לצורך זה, נוסף מאפיין חדש Scale נוסף ב-IGradientFillSettings.
להלן הדגמה לקוד שמדגים כיצד להשתמש במאפיין Scale.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
using (var image = (PsdImage)Image.Load(dataDir + "FillLayerGradient.psd")) | |
{ | |
// getting a fill layer | |
FillLayer fillLayer = null; | |
foreach (var layer in image.Layers) | |
{ | |
fillLayer = layer as FillLayer; | |
if (fillLayer != null) | |
{ | |
break; | |
} | |
} | |
var settings = fillLayer.FillSettings as IGradientFillSettings; | |
// update scale value | |
settings.Scale = 200; | |
fillLayer.Update(); // Updates pixels data | |
image.Save(dataDir + "scaledImage.png", new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha }); | |
} |
שכבות מילוי עם מילוי צבע
מאמר זה מדגים איך למלא את שכבת ה- PSD עם צבע. נא להשתמש במחלקת Psd.Layers.FillLayer כדי להוסיף צבע בשכבת PSD. הקטע הבא מראה טעינת קובץ PSD, גישה למחלקת שכבת המילוי והגדרת הצבע באמצעות נכסי השכבה המלאים FillLayer.FillSettings.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFileName = dataDir + "ColorFillLayer.psd"; | |
string exportPath = dataDir + "ColorFillLayer_output.psd"; | |
var im = (PsdImage)Image.Load(sourceFileName); | |
using (im) | |
{ | |
foreach (var layer in im.Layers) | |
{ | |
if (layer is FillLayer) | |
{ | |
var fillLayer = (FillLayer)layer; | |
if (fillLayer.FillSettings.FillType != FillType.Color) | |
{ | |
throw new Exception("Wrong Fill Layer"); | |
} | |
var settings = (IColorFillSettings)fillLayer.FillSettings; | |
settings.Color = Color.Red; | |
fillLayer.Update(); | |
im.Save(exportPath); | |
break; | |
} | |
} | |
} |