Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Bitmap Klasse (die von der Image Klasse erbt) und die ImageAttributes Klasse bieten Funktionen zum Abrufen und Festlegen von Pixelwerten. Sie können die ImageAttributes Klasse verwenden, um die Alphawerte für ein gesamtes Bild zu ändern, oder Sie können die SetPixel Methode der Bitmap Klasse aufrufen, um einzelne Pixelwerte zu ändern.
Beispiel
Die ImageAttributes Klasse verfügt über viele Eigenschaften, die Sie beim Rendern verwenden können, um Bilder zu ändern. Im folgenden Beispiel wird ein ImageAttributes Objekt verwendet, um alle Alphawerte auf 80 Prozent der Werte festzulegen, die sie waren. Dies erfolgt durch Initialisieren einer Farbmatrix und Festlegen des Alphaskalierungswerts in der Matrix auf 0,8. Die Adresse der Farbmatrix wird an die SetColorMatrix Methode des ImageAttributes Objekts übergeben, und das ImageAttributes Objekt wird an die DrawString Methode des Graphics Objekts übergeben.
Während des Renderns werden die Alphawerte in der Bitmap auf 80 Prozent ihres ursprünglichen Wertes reduziert. Dies führt zu einem Bild, das mit dem Hintergrund kombiniert wird. Wie die folgende Abbildung zeigt, sieht das Bitmapbild transparent aus. Sie können die durchgezogene schwarze Linie durch sie sehen.
Wenn sich das Bild über dem weißen Teil des Hintergrunds befindet, wurde das Bild mit der Farbe Weiß gemischt. Wenn das Bild die schwarze Linie kreuzt, wird das Bild mit der Farbe Schwarz gemischt.
// Create the Bitmap object and load it with the texture image.
Bitmap bitmap = new Bitmap("Texture.jpg");
// Initialize the color matrix.
// Note the value 0.8 in row 4, column 4.
float[][] matrixItems ={
new float[] {1, 0, 0, 0, 0},
new float[] {0, 1, 0, 0, 0},
new float[] {0, 0, 1, 0, 0},
new float[] {0, 0, 0, 0.8f, 0},
new float[] {0, 0, 0, 0, 1}};
ColorMatrix colorMatrix = new ColorMatrix(matrixItems);
// Create an ImageAttributes object and set its color matrix.
ImageAttributes imageAtt = new ImageAttributes();
imageAtt.SetColorMatrix(
colorMatrix,
ColorMatrixFlag.Default,
ColorAdjustType.Bitmap);
// First draw a wide black line.
e.Graphics.DrawLine(
new Pen(Color.Black, 25),
new Point(10, 35),
new Point(200, 35));
// Now draw the semitransparent bitmap image.
int iWidth = bitmap.Width;
int iHeight = bitmap.Height;
e.Graphics.DrawImage(
bitmap,
new Rectangle(30, 0, iWidth, iHeight), // destination rectangle
0.0f, // source rectangle x
0.0f, // source rectangle y
iWidth, // source rectangle width
iHeight, // source rectangle height
GraphicsUnit.Pixel,
imageAtt);
' Create the Bitmap object and load it with the texture image.
Dim bitmap As New Bitmap("Texture.jpg")
' Initialize the color matrix.
' Note the value 0.8 in row 4, column 4.
Dim matrixItems As Single()() = { _
New Single() {1, 0, 0, 0, 0}, _
New Single() {0, 1, 0, 0, 0}, _
New Single() {0, 0, 1, 0, 0}, _
New Single() {0, 0, 0, 0.8F, 0}, _
New Single() {0, 0, 0, 0, 1}}
Dim colorMatrix As New ColorMatrix(matrixItems)
' Create an ImageAttributes object and set its color matrix.
Dim imageAtt As New ImageAttributes()
imageAtt.SetColorMatrix( _
colorMatrix, _
ColorMatrixFlag.Default, _
ColorAdjustType.Bitmap)
' First draw a wide black line.
e.Graphics.DrawLine( _
New Pen(Color.Black, 25), _
New Point(10, 35), _
New Point(200, 35))
' Now draw the semitransparent bitmap image.
Dim iWidth As Integer = bitmap.Width
Dim iHeight As Integer = bitmap.Height
' Pass in the destination rectangle (2nd argument) and the x _
' coordinate (3rd argument), x coordinate (4th argument), width _
' (5th argument), and height (6th argument) of the source rectangle.
e.Graphics.DrawImage( _
bitmap, _
New Rectangle(30, 0, iWidth, iHeight), _
0.0F, _
0.0F, _
iWidth, _
iHeight, _
GraphicsUnit.Pixel, _
imageAtt)
Code kompilieren
Das obige Beispiel ist für die Verwendung mit Windows Forms konzipiert und erfordert PaintEventArgse
, einen Parameter von PaintEventHandler.
Siehe auch
.NET Desktop feedback