Κάνοντας κάθε pixel μιας εικόνας που έχει ένα συγκεκριμένο χρώμα διαφανές

ψήφοι
6

Έχω ένα αντικείμενο της System.Drawing.Image τύπου και θέλουν να καταβάλουν κάθε pixel που έχει κάποια συγκεκριμένη χρώμα, για παράδειγμα μαύρο, διάφανο (δηλαδή, που άλφα σε 0 για αυτό το pixel).

Ποιος είναι ο καλύτερος τρόπος για να γίνει αυτό;

Δημοσιεύθηκε 02/10/2008 στις 11:27
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
2

Έχετε μόνο που ξέρω είναι ότι είναι μια εικόνα; Αν είναι ένα Bitmap, μπορείτε να καλέσετε LockBits, ελέγξτε / διορθώσετε κάθε pixel και στη συνέχεια να ξεκλειδώσετε ξανά τα κομμάτια.

Απαντήθηκε 02/10/2008 στις 11:29
πηγή χρήστη

ψήφοι
3

Κατασκευάστε ένα Bitmap από την εικόνα, και στη συνέχεια να καλέσετε MakeTransparent () σε αυτό το Bitmap. Σας επιτρέπει να ορίσετε ένα χρώμα που θα πρέπει να καταστεί όσο πιο διαφανής.

Απαντήθηκε 02/10/2008 στις 11:34
πηγή χρήστη

ψήφοι
6

Μια καλή προσέγγιση είναι να χρησιμοποιήσετε το ImageAttributes τάξη να στήσετε μια λίστα με τα χρώματα για να ανακατευθύνει κατά την κατάρτιση λαμβάνει χώρα. Το πλεονέκτημα αυτού είναι καλή απόδοση, καθώς και επιτρέποντάς σας να αλλάξει τα χαρτογράφηση χρώματα πολύ εύκολα. Δοκιμάστε κάτι σαν αυτό τον κωδικό ...

ImageAttributes attribs = new ImageAttributes();
List<ColorMap> colorMaps = new List<ColorMap>();
//
// Remap black top be transparent
ColorMap remap = new ColorMap();
remap.OldColor = Color.Black;
remap.NewColor = Color.Transparent;
colorMaps.Add(remap);
//
// ...add additional remapping entries here...
//
attribs.SetRemapTable(colorMaps.ToArray(), ColorAdjustType.Bitmap);
context.Graphics.DrawImage(image, imageRect, 0, 0, 
                           imageRect.Width, imageRect.Height, 
                           GraphicsUnit.Pixel, attribs);
Απαντήθηκε 02/10/2008 στις 11:42
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more