BGRABitmap图像操作10:透视映射

来源:互联网 发布:js代码封装的好处 编辑:程序博客网 时间:2024/06/10 04:25


透视映射允许改变每一个点的深度。跟前一篇的图相比,看不出啥区别。


unit Unit1;{$mode objfpc}{$H+}interfaceuses  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,  BGRABitmap, BGRABitmapTypes, BGRATransform;type  { TForm1 }  TForm1 = class(TForm)    procedure FormPaint(Sender: TObject);  private    { private declarations }  public    { public declarations }  end;var  Form1: TForm1;implementation{$R *.lfm}{ TForm1 }procedure TForm1.FormPaint(Sender: TObject);var image: TBGRABitmap;    tex: TBGRABitmap;begin  image := TBGRABitmap.Create(ClientWidth,ClientHeight, BGRABlack );  tex:= TBGRABitmap.Create('image.png');  image.FillPolyPerspectiveMapping( [PointF(110,10), PointF(250,10), PointF(350,260), PointF(10,260)],                                    [75,             75,             50,              50],       tex, [PointF(0,0), PointF(tex.width-1,0), PointF(tex.Width-1,tex.Height-1), PointF(0,tex.Height-1)], true);  tex.Free;  image.Draw(Canvas,0,0,True);  image.free;end;end.


    深度是神马意思?改变一个点的深度试试。50改成750。

procedure TForm1.FormPaint(Sender: TObject);var image: TBGRABitmap;    tex: TBGRABitmap;begin  image := TBGRABitmap.Create(ClientWidth,ClientHeight, BGRABlack );  tex:= TBGRABitmap.Create('image.png');  image.FillPolyPerspectiveMapping( [PointF(110,10), PointF(250,10), PointF(350,260), PointF(10,260)],                                    [75,             75,             50,              750],       tex, [PointF(0,0), PointF(tex.width-1,0), PointF(tex.Width-1,tex.Height-1), PointF(0,tex.Height-1)], true);  tex.Free;  image.Draw(Canvas,0,0,True);  image.free;end; 

   运行之:



0 0