Question

Je suis en train d'obtenir une image à afficher avec l'une des couleurs remplacé par un alpha blanc pour que je puisse la couche sur le dessus d'autres images. Je l'ai pour que je puisse changer les couleurs assez facilement, mais changer pour être transparent qui me éludant. Voici mon code, en utilisant C # et WPF.

    private void SetAlpha(string location)
    {
        //bmp is a bitmap source that I load from an image
        bmp = new BitmapImage(new Uri(location));
        int[] pixels = new int[(int)bmp.Width * (int)bmp.Height];
        //still not sure what 'stride' is.  Got this part from a tutorial
        int stride = (bmp.PixelWidth * bmp.Format.BitsPerPixel + 7)/8;

        bmp.CopyPixels(pixels, stride, 0);
        int oldColor = pixels[0];
        int red = 255;
        int green = 255;
        int blue = 255;
        int alpha = 0;
        int color = (alpha << 24) + (red << 16) + (green << 8) + blue;

        for (int i = 0; i < (int)bmp.Width * (int)bmp.Height; i++)
        {
            if (pixels[i] == oldColor)
            {
                pixels[i] = color;
            }
        }
            //remake the bitmap source with these pixels
            bmp = BitmapSource.Create(bmp.PixelWidth, bmp.PixelHeight, bmp.DpiX, bmp.DpiY, bmp.Format, bmp.Palette, pixels, stride);
        }

    }

J'ai deux images que je teste cela avec. Image1 est comme ce que je vais travailler sur, pas de transparence dans l'image originale. Image2 a déjà la transparence. Je pensais que ce serait facile de simplement saisir la valeur de image2 (0x00FFFFFF) mais fait juste blanc et dissimule des images derrière.

Les deux images sont .png, et le format pour les deux est Bgr32.

Quelqu'un sait comment obtenir l'image d'être transparent?

Était-ce utile?

La solution

Comment l'utilisation de Bgra32 ?

Assurez-vous aussi comprendre comment la couleur est représentée dans la mémoire et des moyens que alpha .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top