Class SmartFilter

SmartFilter class

Η τάξη για την επεξεργασία μιας βασικής λογικής έξυπνων φίλτρων.

public abstract class SmartFilter : ICloneable

Κατασκευαστές

ΟνομαΠεριγραφή
SmartFilter()Αρχικοποιεί μια νέα παρουσία τουSmartFilter τάξη.

Ιδιότητες

ΟνομαΠεριγραφή
BlendMode { get; set; }Λαμβάνει ή ρυθμίζει τη λειτουργία ανάμειξης.
abstract FilterId { get; }Λαμβάνει το αναγνωριστικό τύπου έξυπνου φίλτρου.
IsEnabled { get; set; }Λαμβάνει ή ορίζει την κατάσταση ενεργοποίησης του έξυπνου φίλτρου.
abstract Name { get; }Λαμβάνει το όνομα έξυπνου φίλτρου.
Opacity { get; set; }Λαμβάνει ή ορίζει την τιμή αδιαφάνειας του έξυπνου φίλτρου.
SourceDescriptor { get; }Η δομή της περιγραφής πηγής με δεδομένα έξυπνου φίλτρου.

Μέθοδοι

ΟνομαΠεριγραφή
Apply(RasterImage)Εφαρμόζει το τρέχον φίλτρο στην είσοδοRasterImage εικόνα.
ApplyToMask(Layer)Εφαρμόζει το τρέχον φίλτρο στην είσοδοLayer δεδομένα μάσκας.
Clone()Κάνει τον κλώνο κατά μέλος της τρέχουσας παρουσίας του τύπου.

Παραδείγματα

Αυτό το παράδειγμα δείχνει την υποστήριξη της διεπαφής έξυπνων φίλτρων.

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

    // Επεξεργασία έξυπνων φίλτρων
    GaussianBlurSmartFilter gaussianBlur = (GaussianBlurSmartFilter)smartObj.SmartFilters.Filters[0];

    // έλεγχος τιμών φίλτρου
    AssertAreEqual(3.1, gaussianBlur.Radius);
    AssertAreEqual(BlendMode.Dissolve, gaussianBlur.BlendMode);
    AssertAreEqual(90d, gaussianBlur.Opacity);
    AssertAreEqual(true, gaussianBlur.IsEnabled);

    // ενημέρωση τιμών φίλτρου
    gaussianBlur.Radius = 1;
    gaussianBlur.BlendMode = BlendMode.Divide;
    gaussianBlur.Opacity = 75;
    gaussianBlur.IsEnabled = false;
    AddNoiseSmartFilter addNoise = (AddNoiseSmartFilter)smartObj.SmartFilters.Filters[1];
    addNoise.Distribution = NoiseDistribution.Uniform;

    // προσθήκη νέων στοιχείων φίλτρου
    var filters = new List<SmartFilter>(smartObj.SmartFilters.Filters);
    filters.Add(new GaussianBlurSmartFilter());
    filters.Add(new AddNoiseSmartFilter());
    smartObj.SmartFilters.Filters = filters.ToArray();

    // εφαρμογή αλλαγών
    smartObj.SmartFilters.UpdateResourceValues();

    // Εφαρμογή φίλτρων
    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];

    // έλεγχος τιμών φίλτρου
    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);
}

Δείτε επίσης