//用 Bitmap 显示图像 var g: TGPGraphics; bit: TGPBitmap; begin g := TGPGraphics.Create(Canvas.Handle); bit := TGPBitmap.Create('c:\temp\x.jpg'); g.DrawImage(bit, 11, 11); {默认大小竟然和 1:1 不一样, 是不是分辨率的问题?} g.DrawImage(bit, 11, 11, bit.GetWidth, bit.GetHeight); {1:1} g.DrawImage(bit, 11, 11, bit.GetWidth*0.5, bit.GetHeight*0.5); {1:2} bit.Free; g.Free; end;
//复制像素 var g: TGPGraphics; bit1,bit2: TGPBitmap; row,column,width,height: Integer; color: TGPColor; begin g := TGPGraphics.Create(Canvas.Handle); bit1 := TGPBitmap.Create('c:\temp\x.jpg'); width := bit1.GetWidth; height := bit1.GetHeight; bit2 := TGPBitmap.Create(width, height); for row := 0 to height - 1 do begin for column := 0 to width - 1 do begin bit1.GetPixel(column, row, color); bit2.SetPixel(column, row, color); end; end; g.DrawImage(bit1, 0, 0, width, height); g.DrawImage(bit2, width, 0, width, height); bit1.Free; bit2.Free; g.Free; end;
//横向翻转 var g: TGPGraphics; bit1,bit2: TGPBitmap; row,column,width,height: Integer; color: TGPColor; begin g := TGPGraphics.Create(Canvas.Handle); bit1 := TGPBitmap.Create('c:\temp\x.jpg'); width := bit1.GetWidth; height := bit1.GetHeight; bit2 := TGPBitmap.Create(width, height); for row := 0 to height - 1 do begin for column := 0 to width - 1 do begin bit1.GetPixel(column, row, color); bit2.SetPixel(width-column, row, color); {width-column} end; end; g.DrawImage(bit1, 0, 0, width, height); g.DrawImage(bit2, width, 0, width, height); bit1.Free; bit2.Free; g.Free; end;
//纵向翻转 var g: TGPGraphics; bit1,bit2: TGPBitmap; row,column,width,height: Integer; color: TGPColor; begin g := TGPGraphics.Create(Canvas.Handle); bit1 := TGPBitmap.Create('c:\temp\x.jpg'); width := bit1.GetWidth; height := bit1.GetHeight; bit2 := TGPBitmap.Create(width, height); for row := 0 to height - 1 do begin for column := 0 to width - 1 do begin bit1.GetPixel(column, row, color); bit2.SetPixel(column, height-row, color); {height-row} end; end; g.DrawImage(bit1, 0, 0, width, height); g.DrawImage(bit2, width, 0, width, height); bit1.Free; bit2.Free; g.Free; end;
//透明度渐变 var g: TGPGraphics; bit1,bit2: TGPBitmap; row,column,width,height: Integer; color: TGPColor; begin g := TGPGraphics.Create(Canvas.Handle); bit1 := TGPBitmap.Create('c:\temp\x.jpg'); width := bit1.GetWidth; height := bit1.GetHeight; bit2 := TGPBitmap.Create(width, height); for row := 0 to height - 1 do begin for column := 0 to width - 1 do begin bit1.GetPixel(column, row, color); color := MakeColor(255 * Column div width, GetRed(color), GetGreen(color), GetBlue(color)); bit2.SetPixel(column, row, color); end; end; g.DrawImage(bit1, 0, 0, width, height); g.DrawImage(bit2, width, 0, width, height); bit1.Free; bit2.Free; g.Free; end;
//显示 ico 图标 var g : TGPGraphics; bit: TGPBitmap; ico: HICON; begin g := TGPGraphics.Create(Canvas.Handle); ico := LoadIcon(0, IDI_QUESTION); bit:= TGPBitmap.Create(ico); g.DrawImage(bit, 10, 10); bit.Free; g.Free; end;