zoukankan      html  css  js  c++  java
  • GDI+ 学习记录(31): 图像颜色变换(TGPImageAttributes)

    //正常显示图片, 没有变换
    uses GDIPAPI, GDIPOBJ;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      g: TGPGraphics;
      img: TGPImage;
    begin
      g := TGPGraphics.Create(Canvas.Handle);
      img := TGPImage.Create('c:\temp\test.png'); {测试文件要存在}
      g.DrawImage(img, 0, 0, img.GetWidth, img.GetHeight);
      img.Free;
      g.Free;
    end;
    
    //效果图:

    //添加颜色变换
    uses GDIPAPI, GDIPOBJ;
    
    procedure TForm1.FormPaint(Sender: TObject);
    var
      g: TGPGraphics;
      img: TGPImage;
      imgAtt: TGPImageAttributes;
    const
      ColorMatrix: TColorMatrix = (
        (1.0, 0.0, 0.0, 0.0, 0.0),
        (0.0, 1.0, 0.0, 0.0, 0.0),
        (0.0, 0.0, 1.0, 0.0, 0.0),
        (0.0, 0.0, 0.0, 1.0, 0.0),
        (1.0, 0.0, 0.0, 0.0, 1.0));
    begin
      g := TGPGraphics.Create(Canvas.Handle);
      img := TGPImage.Create('c:\temp\test.png'); {测试文件要存在}
    
      imgAtt := TGPImageAttributes.Create;
      imgAtt.SetColorMatrix(colorMatrix, ColorMatrixFlagsDefault, ColorAdjustTypeDefault);
    
      g.DrawImage(
        img,
        MakeRect(0,0,img.GetWidth,img.GetHeight),
        0,
        0,
        img.GetWidth,
        img.GetHeight,
        UnitPixel,
        imgAtt);
    
      imgAtt.Free;
      img.Free;
      g.Free;
    end;
    
    //效果图:

    这个话题还有很多内容, 先弄这个例子算是给 M. Rokkaei 的回答.
  • 相关阅读:
    进程的常用方法
    进程创建&僵尸进程&孤儿进程
    进程基础
    操作系统的发展史
    UDP协议&socketserver模块
    socket套接字
    简述计算机网络
    day 7-8 协程
    __new__和__init__的区别
    day 7-22 进程,线程,协程
  • 原文地址:https://www.cnblogs.com/del/p/1065275.html
Copyright © 2011-2022 走看看