• GDI+ 学习记录(27): Bitmap


    //用 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;
  • 相关阅读:
    运算符重载
    责任链模式
    MFC一些常见面试问题
    浅拷贝&深拷贝
    下雨的效果
    本地时间使用与倒计时
    钟表效果
    一种水纹波浪效果
    一个相册效果
    在Flash中管理鼠标右键
  • 原文地址:https://www.cnblogs.com/del/p/1017608.html
Copyright © 2020-2023  润新知