private void PaintImage(Graphics g) { // Yes, need to use the more complex DrawImage method instead Image image = Image.FromFile(@"C:/Earth.bmp"); // Three points provided are upper-left, upper-right and // lower-left of the destination parallelogram. Point[] pts = new Point[3]; pts[0].X = 1; pts[0].Y = 1; pts[1].X = pts[0].X + image.Width; pts[1].Y = pts[0].Y; pts[2].X = pts[0].X; pts[2].Y = pts[1].Y + image.Height; ImageAttributes _imageAttri = new System.Drawing.Imaging.ImageAttributes(); float[][] ptsArray = { 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.6f, 0}, //注意:此处为0.6f,图像为半透明 new float[] {0, 0, 0, 0, 1} }; ColorMatrix clrMatrix = new ColorMatrix(ptsArray); _imageAttri.SetColorMatrix(clrMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); g.DrawImage(image, pts, new Rectangle(0, 0, image.Width, image.Height), GraphicsUnit.Pixel, _imageAttri); }