J'essaie d'implémenter une fonction de filtrage des couleurs de style Photoshop dans mon application. J'ai un bitmap, et 4 cases à cocher (R, G, B, A). Je voulais savoir ce qui est le meilleur moyen de le faireImplémentation du filtrage des couleurs en C#
Actuellement, je fais comme suit
Byte[] rgbValues = new Byte[data.Stride * data.Height];
for (int row = 0; row < data.Height; row++)
{
// Loop through each pixel on this scan line
int bufPos = (m_height - row - 1) * m_width;
int index = row * data.Stride;
for (int col = 0; col < data.Width; col++, bufPos++, index += 4)
{
bool drawCheckerBoard = true; // for alpha
UInt32 rgba = m_image[bufPos];
UInt32 r = EnableRedChannel ? ((rgba >> 0) & 0xFF) : 0x00;
UInt32 g = EnableGreenChannel ? ((rgba >> 8) & 0xFF) : 0x00;
UInt32 b = EnableBlueChannel ? ((rgba >> 16) & 0xFF) : 0x00;
UInt32 a = (rgba >> 24) & 0xFF;
...
...
}
}
puis la Marshal.Copy habituelle et débloquer les bits etc ...
Comme vous peut voir ce n'est pas vraiment un moyen optimisé, je voulais des suggestions pour une méthode plus rapide.
Merci
Est-ce que c'est vraiment lent? –