Existe-t-il un moyen de manipuler l'alpha d'une image en utilisant alpha d'une autre image? Supposons que j'ai une image et que je veuille modifier son alpha départ opaque à gauche et totalement transparent à droite, actuellement je dessine une autre image avec LinearGradientBrush et initialise alpha de l'image originale de la deuxième image en boucle pixel par pixel, y at-il d'une autre manière dans Gdiplus, un masque d'image, ou un mélange d'alpha de deux images? Conclusion: il semble qu'il n'y ait aucun moyen dans GDI + de fusionner deux images, seul moyen semble être le chemin manuel en itérant à travers les pixels.Gdiplus masque l'image d'une autre image
1
A
Répondre
2
Je pense que vous avez raison en ce que vous devez faire ce pixel par pixel. J'ai également cherché un moyen plus «pur» de le faire, mais c'est ce que j'ai fini avec:
public enum ChannelARGB
{
Blue = 0,
Green = 1,
Red = 2,
Alpha = 3
}
public static void transferOneARGBChannelFromOneBitmapToAnother(
Bitmap source,
Bitmap dest,
ChannelARGB sourceChannel,
ChannelARGB destChannel)
{
if (source.Size!=dest.Size)
throw new ArgumentException();
Rectangle r = new Rectangle(Point.Empty, source.Size);
BitmapData bdSrc = source.LockBits(r, ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
BitmapData bdDst = dest.LockBits(r, ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
unsafe
{
byte* bpSrc = (byte*)bdSrc.Scan0.ToPointer();
byte* bpDst = (byte*)bdDst.Scan0.ToPointer();
bpSrc += (int)sourceChannel;
bpDst += (int)destChannel;
for (int i = r.Height * r.Width; i > 0; i--)
{
*bpDst = *bpSrc;
bpSrc += 4;
bpDst += 4;
}
}
source.UnlockBits(bdSrc);
dest.UnlockBits(bdDst);
}
Questions connexes
- 1. gdiplus construct Image de la chaîne
- 2. Doit pas Gdiplus :: Image :: GetWidth() et un tas d'autres getters être "const"?
- 3. Convertir de tagRECT/CRect en Gdiplus :: Rect
- 4. Monnaie Masque
- 5. Masque Javascript
- 6. Faites glisser une image agrandie dans un masque d'écrêtage div en utilisant jQuery draggable?
- 7. image est utilisé par un autre processus
- 8. obtenir le texte sélectionné d'une autre image
- 9. PHP - polygone de masque sur l'image
- 10. Masque de devise avec jQuery
- 11. Réinitialisation du masque d'événement comm
- 12. Clip ou masque une texture 2D
- 13. Récupération du masque réseau en Python
- 14. Définir le masque alpha de BufferedImage en Java
- 15. opencv combinant une image à une autre image sur les coordonnées données
- 16. La meilleure façon d'estamper une image avec une autre image pour créer un filigrane dans ASP.NET?
- 17. Quel est le moyen le plus rapide de dessiner une image sur une autre image?
- 18. Html Image over image
- 19. masque pour un chiffre et deux chiffres
- 20. appliquer une datepicker à un masque
- 21. Runtime.getRuntime(). Exec(), masque l'écran de la console
- 22. SPARC - Masque de bits sans décalage
- 23. Masque d'entrée sans année pour la date
- 24. Comment rendre ma scène en tant que masque dans OpenGL?
- 25. Panneau de masque ExtJS pendant que les actions sont effectuées
- 26. Comment une image négative est-elle comprise?
- 27. Trouver une Image dans une Image
- 28. Avertissement: Ignorer l'excès d'entrées de dialogue de masque:
- 29. Bug iframe ASP.NET masque les zones de texte?
- 30. Comment obtenir un masque d'autorisation dans Sharepoint 2007?
c'est ce que je fais déjà :( –