Class SmartFilter

SmartFilter class

De klasse om een basislogica van slimme filters te verwerken.

public abstract class SmartFilter : ICloneable

Constructeurs

NaamBeschrijving
SmartFilter()Initialiseert een nieuw exemplaar van hetSmartFilter klasse.

Eigenschappen

NaamBeschrijving
BlendMode { get; set; }Krijgt of stelt de overvloeimodus in.
abstract FilterId { get; }Haalt de ID van het slimme filtertype op.
IsEnabled { get; set; }Krijgt of stelt de ingeschakelde status van het slimme filter in.
abstract Name { get; }Krijgt de slimme filternaam.
Opacity { get; set; }Haalt de dekkingswaarde van slim filter op of stelt deze in.
SourceDescriptor { get; }De structuur van de brondescriptor met slimme filtergegevens.

methoden

NaamBeschrijving
Apply(RasterImage)Past het huidige filter toe op invoerRasterImage afbeelding.
ApplyToMask(Layer)Past het huidige filter toe op invoerLayer maskeer gegevens.
Clone()Maakt de lidgewijze kloon van de huidige instantie van het type.

Voorbeelden

Dit voorbeeld demonstreert de ondersteuning van de interface voor slimme filters.

[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];

    // bewerk slimme filters
    GaussianBlurSmartFilter gaussianBlur = (GaussianBlurSmartFilter)smartObj.SmartFilters.Filters[0];

    // controleer filterwaarden
    AssertAreEqual(3.1, gaussianBlur.Radius);
    AssertAreEqual(BlendMode.Dissolve, gaussianBlur.BlendMode);
    AssertAreEqual(90d, gaussianBlur.Opacity);
    AssertAreEqual(true, gaussianBlur.IsEnabled);

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

    // voeg nieuwe filteritems toe
    var filters = new List<SmartFilter>(smartObj.SmartFilters.Filters);
    filters.Add(new GaussianBlurSmartFilter());
    filters.Add(new AddNoiseSmartFilter());
    smartObj.SmartFilters.Filters = filters.ToArray();

    // wijzigingen aanbrengen
    smartObj.SmartFilters.UpdateResourceValues();

    // Pas filters toe
    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];

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

Zie ook