Class SmartFilter

SmartFilter class

Die Klasse zum Verarbeiten einer Basislogik von intelligenten Filtern.

public abstract class SmartFilter : ICloneable

Konstrukteure

NameBeschreibung
SmartFilter()Initialisiert eine neue Instanz vonSmartFilter Klasse.

Eigenschaften

NameBeschreibung
BlendMode { get; set; }Ruft den Mischmodus ab oder legt ihn fest.
abstract FilterId { get; }Ruft die Kennung des intelligenten Filtertyps ab.
IsEnabled { get; set; }Ruft den aktivierten Status des intelligenten Filters ab oder legt ihn fest.
abstract Name { get; }Ruft den Namen des intelligenten Filters ab.
Opacity { get; set; }Ruft den Deckkraftwert des Smartfilters ab oder legt ihn fest.
SourceDescriptor { get; }Die Quelldeskriptorstruktur mit intelligenten Filterdaten.

Methoden

NameBeschreibung
Apply(RasterImage)Wendet den aktuellen Filter auf die Eingabe anRasterImage Bild.
ApplyToMask(Layer)Wendet den aktuellen Filter auf die Eingabe anLayer Maskendaten.
Clone()Erstellt den mitgliederweisen Klon der aktuellen Instanz des Typs.

Beispiele

Dieses Beispiel demonstriert die Unterstützung der Schnittstelle für intelligente Filter.

[C#]

string sourceFilte = "r2_SmartFilters.psd";
string outputPsd = "out_r2_SmartFilters.psd";

void AssertAreEqual(object expected, object actual)
{
    if (!object.Equals(expected, actual))
    {
        throw new Exception("Objects are not equal.");
    }
}

using (var image = (PsdImage)Image.Load(sourceFilte))
{
    SmartObjectLayer smartObj = (SmartObjectLayer)image.Layers[1];

    // intelligente Filter bearbeiten
    GaussianBlurSmartFilter gaussianBlur = (GaussianBlurSmartFilter)smartObj.SmartFilters.Filters[0];

    // Filterwerte prüfen
    AssertAreEqual(3.1, gaussianBlur.Radius);
    AssertAreEqual(BlendMode.Dissolve, gaussianBlur.BlendMode);
    AssertAreEqual(90d, gaussianBlur.Opacity);
    AssertAreEqual(true, gaussianBlur.IsEnabled);

    // Filterwerte aktualisieren
    gaussianBlur.Radius = 1;
    gaussianBlur.BlendMode = BlendMode.Divide;
    gaussianBlur.Opacity = 75;
    gaussianBlur.IsEnabled = false;
    AddNoiseSmartFilter addNoise = (AddNoiseSmartFilter)smartObj.SmartFilters.Filters[1];
    addNoise.Distribution = NoiseDistribution.Uniform;

    // neue Filterelemente hinzufügen
    var filters = new List<SmartFilter>(smartObj.SmartFilters.Filters);
    filters.Add(new GaussianBlurSmartFilter());
    filters.Add(new AddNoiseSmartFilter());
    smartObj.SmartFilters.Filters = filters.ToArray();

    // Änderungen übernehmen
    smartObj.SmartFilters.UpdateResourceValues();

    // Filter anwenden
    smartObj.SmartFilters.Filters[0].Apply(image.Layers[2]);
    smartObj.SmartFilters.Filters[4].ApplyToMask(image.Layers[2]);

    image.Save(outputPsd);
}

using (var image = (PsdImage)Image.Load(outputPsd))
{
    SmartObjectLayer smartObj = (SmartObjectLayer)image.Layers[1];

    GaussianBlurSmartFilter gaussianBlur = (GaussianBlurSmartFilter)smartObj.SmartFilters.Filters[0];

    // Filterwerte prüfen
    AssertAreEqual(1d, gaussianBlur.Radius);
    AssertAreEqual(BlendMode.Divide, gaussianBlur.BlendMode);
    AssertAreEqual(75d, gaussianBlur.Opacity);
    AssertAreEqual(false, gaussianBlur.IsEnabled);

    AssertAreEqual(true, smartObj.SmartFilters.Filters[5] is GaussianBlurSmartFilter);
    AssertAreEqual(true, smartObj.SmartFilters.Filters[6] is AddNoiseSmartFilter);
}

Siehe auch