Aspose.PSD pour .NET 18.12 - Notes de publication
Clé | Résumé | Catégorie |
---|---|---|
PSDNET-76 | Support de la couche de contour | Fonctionnalité |
PSDNET-83 | Support de l’effet de dégradé | Fonctionnalité |
PSDNET-84 | Support de l’effet de motif | Fonctionnalité |
PSDNET-89 | Permettre l’ajout d’une nouvelle couche régulière générée à PsdImage | Fonctionnalité |
PSDNET-93 | Après la mise à jour du contenu de la couche de texte avec le caractère \ (barre oblique inversée), le fichier résultant ne peut pas être ouvert dans Photoshop | Bogue |
PSDNET-39 | Images corrompues après l’exportation avec des données d’image surdimensionnées en mode couleur CMJN | Bogue |
PSDNET-52 | Possible : La rotation dans PSD ne fonctionne pas | Bogue |
PSDNET-88 | Possible : Les méthodes de recadrage dans Aspose.Psd ne fonctionnent pas | Bogue |
PSDNET-91 | Appliquer les modifications d’Aspose.Imaging à Aspose.PSD | Amélioration |
Changements de l’API publique
Méthode Aspose.PSD.FileFormats.Psd.PsdImage.AddRegularLayer
Classe Aspose.PSD.CoreExceptions.ImageFormats.PsdImageArgumentException
Méthode Aspose.PSD.CoreExceptions.ImageFormats.PsdImageArgumentException.#ctor(System.String)
Méthode Aspose.PSD.CoreExceptions.ImageFormats.PsdImageArgumentException.#ctor(System.String,System.Exception)
Classe Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.BaseFillSettings
Méthode Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.BaseFillSettings.#ctor
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.BaseFillSettings.FillType
Classe Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.ColorFillSettings
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.ColorFillSettings.Color
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.ColorFillSettings.FillType
Classe Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.FillType
Champ/Enum Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.FillType.Color
Champ/Enum Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.FillType.Gradient
Champ/Enum Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.FillType.Pattern
Classe Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientColorPoint
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientColorPoint.Color
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientColorPoint.Location
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientColorPoint.MedianPointLocation
Classe Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.Color
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.AlignWithLayer
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.Dither
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.Reverse
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.Angle
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.GradientType
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.HorizontalOffset
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.VerticalOffset
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.FillType
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.ColorPoints
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.TransparencyPoints
Méthode Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.AddColorPoint
Méthode Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.AddTransparencyPoint
Méthode Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.RemoveTransparencyPoint(Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientTransparencyPoint)
Méthode Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.RemoveColorPoint(Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientColorPoint)
Classe Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientTransparencyPoint
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientTransparencyPoint.Opacity
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientTransparencyPoint.Location
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientTransparencyPoint.MedianPointLocation
Classe Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternFillSettings
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternFillSettings.FillType
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternFillSettings.Linked
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternFillSettings.Scale
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternFillSettings.PointType
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternFillSettings.PatternName
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternFillSettings.PatternId
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternFillSettings.HorizontalOffset
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternFillSettings.VerticalOffset
Classe Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.StrokeEffect
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.StrokeEffect.BlendMode
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.StrokeEffect.IsVisible
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.StrokeEffect.FillSettings
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.StrokeEffect.Opacity
Classe Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lfx2Resources.GradientType
Classe Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lfx2Resources.GradientType
Champ/Enum Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lfx2Resources.GradientType.Linear
Champ/Enum Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lfx2Resources.GradientType.Radial
Champ/Enum Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lfx2Resources.GradientType.Angle
Champ/Enum Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lfx2Resources.GradientType.Reflected
Champ/Enum Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lfx2Resources.GradientType.Diamond
Champ/Enum Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lfx2Resources.GradientType.ShapeBurst
Classe Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource
Méthode Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.#ctor
Méthode Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.#ctor(System.Byte[])
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.PatternData
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.PatternId
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.Name
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.Height
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.Width
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.ImageMode
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.Version
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.PatternLength
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.Signature
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.Key
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.Length
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.PsdVersion
Méthode Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.SetPattern(System.Int32[],Aspose.PSD.Rectangle)
Méthode Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.Save(Aspose.PSD.StreamContainer,System.Int32)
Champ/Enum Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PattResource.TypeToolKey
Méthode Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.#ctor
Méthode Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientFillSettings.GenerateLfx2ResourceNodes
Classe Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientOverlayEffect
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientOverlayEffect.Settings
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientOverlayEffect.BlendMode
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientOverlayEffect.IsVisible
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.GradientOverlayEffect.Opacity
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternFillSettings.Color
Méthode Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.BlendingOptions.AddGradientOverlay
Méthode Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.BlendingOptions.AddPatternOverlay
Méthode Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternFillSettings.GenerateLfx2ResourceNodes(System.String,Aspose.PSD.Color,System.String,System.String,System.Double,System.Boolean,Aspose.PSD.PointF)
Classe Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternOverlayEffect
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternOverlayEffect.Settings
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternOverlayEffect.BlendMode
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternOverlayEffect.IsVisible
Propriété Aspose.PSD.FileFormats.Psd.Layers.LayerEffects.PatternOverlayEffect.Opacity
Exemples d’utilisation:
PSDNET-76. Support de la couche de contour
1) Type de remplissage - Motif
// Effet de contour. Type de remplissage - Motif. Exemple
string nomFichierSource = "Contour.psd";
string cheminExportation = "ContourMotifModifié.psd";
var optionsChargement = new PsdLoadOptions()
{
LoadEffectsResource = true
};
// Préparation de nouvelles données
var nouveauMotif = new int[]
{
Color.Aqua.ToArgb(), Color.Red.ToArgb(), Color.Red.ToArgb(), Color.Aqua.ToArgb(),
Color.Aqua.ToArgb(), Color.White.ToArgb(), Color.White.ToArgb(), Color.Aqua.ToArgb(),
Color.Aqua.ToArgb(), Color.White.ToArgb(), Color.White.ToArgb(), Color.Aqua.ToArgb(),
Color.Aqua.ToArgb(), Color.Red.ToArgb(), Color.Red.ToArgb(), Color.Aqua.ToArgb(),
};
var nouvellesBornesMotif = new Rectangle(0, 0, 4, 4);
var identifiant = Guid.NewGuid();
using (var im = (PsdImage)Image.Load(nomFichierSource, optionsChargement))
{
var contourMotif = (StrokeEffect)im.Layers[3].BlendingOptions.Effects[0];
Assert.AreEqual(BlendMode.Normal, contourMotif.BlendMode);
Assert.AreEqual(255, contourMotif.Opacity);
Assert.AreEqual(true, contourMotif.IsVisible);
var paramRemplissage = (PatternFillSettings)contourMotif.FillSettings;
Assert.AreEqual(FillType.Pattern, paramRemplissage.FillType);
contourMotif.Opacity = 127;
contourMotif.BlendMode = BlendMode.Color;
PattResource ressource;
foreach (var ressourceCalqueGlobal in im.GlobalLayerResources)
{
if (ressourceCalqueGlobal is PatternResource)
{
ressource = (PatternResource)ressourceCalqueGlobal;
ressource.PatternId = identifiant.ToString();
ressource.Name = "$$$/Presets/Patterns/HorizontalLine1=Horizontal Line 9\0";
ressource.SetPattern(nouveauMotif, nouvellesBornesMotif);
}
}
((PatternFillSettings)contourMotif.FillSettings).PatternName = "$$$/Presets/Patterns/HorizontalLine1=Horizontal Line 9\0";
((PatternFillSettings)contourMotif.FillSettings).PatternId = identifiant.ToString() + "\0";
im.Save(cheminExportation);
}
// Fichier test après modification
using (var im = (PsdImage)Image.Load(nomFichierSource, optionsChargement))
{
var contourMotif = (StrokeEffect)im.Layers[3].BlendingOptions.Effects[0];
PattResource ressource = null;
foreach (var ressourceCalqueGlobal in im.GlobalLayerResources)
{
if (ressourceCalqueGlobal is PatternResource)
{
ressource = (PatternResource)ressourceCalqueGlobal;
}
}
if (ressource == null)
{
throw new Exception("Ressource motif non trouvée");
}
// Vérifier les données du motif
Assert.AreEqual(nouveauMotif, ressource.PatternData);
Assert.AreEqual(nouvellesBornesMotif, new Rectangle(0, 0, ressource.Width, ressource.Height));
Assert.AreEqual(identifiant.ToString(), ressource.PatternId);
Assert.AreEqual(BlendMode.Color, contourMotif.BlendMode);
Assert.AreEqual(127, contourMotif.Opacity);
Assert.AreEqual(true, contourMotif.IsVisible);
var paramRemplissage = (PatternFillSettings)contourMotif.FillSettings;
Assert.AreEqual(FillType.Pattern, paramRemplissage.FillType);
}
Type de remplissage - Dégradé
// Effet de contour. Type de remplissage - Dégradé. Exemple
string nomFichierSource = "Contour.psd";
string cheminExportation = "ContourDégradéModifié.psd";
var optionsChargement = new PsdLoadOptions()
{
LoadEffectsResource = true
};
using (var im = (PsdImage)Image.Load(nomFichierSource, optionsChargement))
{
var contourDégradé = (StrokeEffect)im.Layers[2].BlendingOptions.Effects[0];
Assert.AreEqual(BlendMode.Normal, contourDégradé.BlendMode);
Assert.AreEqual(255, contourDégradé.Opacity);
Assert.AreEqual(true, contourDégradé.IsVisible);
var paramRemplissage = (GradientFillSettings)contourDégradé.FillSettings;
Assert.AreEqual(Color.Black, paramRemplissage.Color);
Assert.AreEqual(FillType.Gradient, paramRemplissage.FillType);
Assert.AreEqual(true, paramRemplissage.AlignWithLayer);
Assert.AreEqual(GradientType.Linear, paramRemplissage.GradientType);
Assert.IsTrue(Math.Abs(90 - paramRemplissage.Angle) < 0.001, "L'angle est incorrect");
Assert.AreEqual(false, paramRemplissage.Dither);
Assert.IsTrue(Math.Abs(0 - paramRemplissage.HorizontalOffset) < 0.001, "Le décalage horizontal est incorrect");
Assert.IsTrue(Math.Abs(0 - paramRemplissage.VerticalOffset) < 0.001, "Le décalage vertical est incorrect");
Assert.AreEqual(false, paramRemplissage.Reverse);
// Points de couleur
var pointsCouleur = paramRemplissage.ColorPoints;
Assert.AreEqual(2, pointsCouleur.Length);
Assert.AreEqual(Color.Black, pointsCouleur[0].Color);
Assert.AreEqual(0, pointsCouleur[0].Location);
Assert.AreEqual(50, pointsCouleur[0].MedianPointLocation);
Assert.AreEqual(Color.White, pointsCouleur[1].Color);
Assert.AreEqual(4096, pointsCouleur[1].Location);
Assert.AreEqual(50, pointsCouleur[1].MedianPointLocation);
// Points de transparence
var pointsTransparence = paramRemplissage.TransparencyPoints;
Assert.AreEqual(2, pointsTransparence.Length);
Assert.AreEqual(0, pointsTransparence[0].Location);
Assert.AreEqual(50, pointsTransparence[0].MedianPointLocation);
Assert.AreEqual(100, pointsTransparence[0].Opacity);
Assert.AreEqual(4096, pointsTransparence[1].Location);
Assert.AreEqual(50, pointsTransparence[1].MedianPointLocation);
Assert.AreEqual(100, pointsTransparence[1].Opacity);
// Test d'édition
paramRemplissage.Color = Color.Green;
contourDégradé.Opacity = 127;
contourDégradé.BlendMode = BlendMode.Color;
paramRemplissage.AlignWithLayer = false;
paramRemplissage.GradientType = GradientType.Radial;
paramRemplissage.Angle = 45;
paramRemplissage.Dither = true;
paramRemplissage.HorizontalOffset = 15;
paramRemplissage.VerticalOffset = 11;
paramRemplissage.Reverse = true;
// Ajouter un nouveau point de couleur
var pointCouleur = paramRemplissage.AddColorPoint();
pointCouleur.Color = Color.Green;
pointCouleur.Location = 4096;
pointCouleur.MedianPointLocation = 75;
// Modifier l'emplacement du point précédent
paramRemplissage.ColorPoints[1].Location = 1899;
// Ajouter un nouveau point de transparence
var pointTransparence = paramRemplissage.AddTransparencyPoint();
pointTransparence.Opacity = 25;
pointTransparence.MedianPointLocation = 25;
pointTransparence.Location = 4096;
// Modifier l'emplacement du point de transparence précédent
paramRemplissage.TransparencyPoints[1].Location = 2411;
im.Save(cheminExportation);
}
// Fichier test après modification
using (var im = (PsdImage)Image.Load(cheminExportation, optionsChargement))
{
var contourDégradé = (StrokeEffect)im.Layers[2].BlendingOptions.Effects[0];
Assert.AreEqual(BlendMode.Color, contourDégradé.BlendMode);
Assert.AreEqual(127, contourDégradé.Opacity);
Assert.AreEqual(true, contourDégradé.IsVisible);
var paramRemplissage = (GradientFillSettings)contourDégradé.FillSettings;
Assert.AreEqual(Color.Green, paramRemplissage.Color);
Assert.AreEqual(FillType.Gradient, paramRemplissage.FillType);
// Vérifier les points de couleur
Assert.AreEqual(3, paramRemplissage.ColorPoints.Length);
var point = paramRemplissage.ColorPoints[0];
Assert.AreEqual(50, point.MedianPointLocation);
Assert.AreEqual(Color.Black, point.Color);
Assert.AreEqual(0, point.Location);
point = paramRemplissage.ColorPoints[1];
Assert.AreEqual(50, point.MedianPointLocation);
Assert.AreEqual(Color.White, point.Color);
Assert.AreEqual(1899, point.Location);
point = paramRemplissage.ColorPoints[2];
Assert.AreEqual(75, point.MedianPointLocation);
Assert.AreEqual(Color.Green, point.Color);
Assert.AreEqual(4096, point.Location);
// Vérifier les points de transparence
Assert.AreEqual(3, paramRemplissage.TransparencyPoints.Length);
var pointTransparence = paramRemplissage.TransparencyPoints[0];
Assert.AreEqual(50, pointTransparence.MedianPointLocation);
Assert.AreEqual(100, pointTransparence.Opacity);
Assert.AreEqual(0, pointTransparence.Location);
pointTransparence = paramRemplissage.TransparencyPoints[1];
Assert.AreEqual(50, pointTransparence.MedianPointLocation);
Assert.AreEqual(100, pointTransparence.Opacity);
Assert.AreEqual(2411, pointTransparence.Location);
pointTransparence = paramRemplissage.TransparencyPoints[2];
Assert.AreEqual(25, pointTransparence.MedianPointLocation);
Assert.AreEqual(25, pointTransparence.Opacity);
Assert.AreEqual(4096, pointTransparence.Location);
}
PSDNET-84. Support de l’effet de motif.
// Exemple d'effet de superposition de motif
string nomFichierSource = "SuperpositionMotif.psd";
string cheminExportation = "SuperpositionMotifModifié.psd";
var nouveauMotif = new int[]
{
Color.Aqua.ToArgb(), Color.Red.ToArgb(), Color.Red.ToArgb(), Color.Aqua.ToArgb(),
Color.Aqua.ToArgb(), Color.White.ToArgb(), Color.White.ToArgb(), Color.Aqua.ToArgb(),
};
var nouvellesBornesMotif = new Rectangle(0, 0, 4, 2);
var identifiant = Guid.NewGuid();
var nouveauNomMotif = "$$$/Presets/Patterns/Motif=Nouveau nom de motif\0";
var optionsChargement = new PsdLoadOptions()
{
LoadEffectsResource = true
};
using (var im = (PsdImage)Image.Load(nomFichierSource, optionsChargement))
{
var motifSuperposition = (PatternOverlayEffect)im.Layers[1].BlendingOptions.Effects[0];
Assert.AreEqual(BlendMode.Normal, motifSuperposition.BlendMode);
Assert.AreEqual(127, motifSuperposition.Opacity);
Assert.AreEqual(true, motifSuperposition.IsVisible);
var parametres = motifSuperposition.Settings;
Assert.AreEqual(Color.Empty, parametres.Color);
Assert.AreEqual(FillType.Pattern, parametres.FillType);
Assert.AreEqual("85163837-eb9e-5b43-86fb-e6d5963ea29a\0", parametres.PatternId);
Assert.AreEqual("$$$/Presets/Patterns/OpticalSquares=Optical Squares\0", parametres.PatternName);
Assert.AreEqual(null, parametres.PointType);
Assert.AreEqual(100, parametres.Scale);
Assert.AreEqual(false, parametres.Linked);
Assert.IsTrue(Math.Abs(0 - parametres.HorizontalOffset) < 0.001, "Le décalage horizontal est incorrect");
Assert.IsTrue(Math.Abs(0 - parametres.VerticalOffset) < 0.001, "Le décalage vertical est incorrect");
// Test d'édition
parametres.Color = Color.Green;
motifSuperposition.Opacity = 193;
motifSuperposition.BlendMode = BlendMode.Difference;
parametres.HorizontalOffset = 15;
parametres.VerticalOffset = 11;
PattResource ressource;
foreach (var ressourceCalqueGlobal in im.GlobalLayerResources)
{
if (ressourceCalqueGlobal is PatternResource)
{
ressource = (PatternResource)ressourceCalqueGlobal;
ressource.PatternId = identifiant.ToString();
ressource.Name = nouveauNomMotif;
ressource.SetPattern(nouveauMotif, nouvellesBornesMotif);
}
}
parametres.PatternName = nouveauNomMotif;
parametres.PatternId = identifiant.ToString() + "\0";
im.Save(cheminExportation);
}
// Fichier test après modification
using (var im = (PsdImage)Image.Load(nomFichierSource, optionsChargement))
{
var motifSuperposition = (PatternOverlayEffect)im.Layers[1].BlendingOptions.Effects[0];
Assert.AreEqual(BlendMode.Difference, motifSuperposition.BlendMode);
Assert.AreEqual(193, motifSuperposition.Opacity);
Assert.AreEqual(true, motifSuperposition.IsVisible);
var parametres = motifSuperposition.Settings;
Assert.AreEqual(Color.Empty, parametres.Color);
Assert.AreEqual(FillType.Pattern, parametres.FillType);
PattResource ressource = null;
foreach (var ressourceCalqueGlobal in im.GlobalLayerResources)
{
if (ressourceCalqueGlobal is PatternResource)
{
ressource = (PatternResource)ressourceCalqueGlobal;
}
}
if (ressource == null)
{
throw new Exception("Ressource motif non trouvée");
}
// Vérifier les données du motif
Assert.AreEqual(nouveauMotif, ressource.PatternData);
Assert.AreEqual(nouvellesBornesMotif, new Rectangle(0, 0, ressource.Width, ressource.Height));
Assert.AreEqual(identifiant.ToString(), ressource.PatternId);
}