您的位置:首页 > 其它

两张图片:一个bmp,一个Mask的绘制方法

2015-09-08 13:24 387 查看
可以用ps蒙板来实现,用代码也可以:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, PngImage;

type

TForm1 = class(TForm)

ImageBmp: TImage;

ImageBmpMask: TImage;

procedure FormPaint(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

private

FBuffPng: TPNGObject;

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

var

I, J: Integer;

LSourceAlphaAry: pByteArray;

begin

FBuffPng := TPNGObject.Create;

SetPngSize(ImageBmp.Width, ImageBmp.Height, FBuffPng);

for J := 0 to FBuffPng.Height - 1 do

begin

LSourceAlphaAry := FBuffPng.AlphaScanline[J];

if Assigned(LSourceAlphaAry) then

begin

for I := 0 to FBuffPng.Width - 1 do

begin

FBuffPng.Pixels[I, J] := ImageBmp.Canvas.Pixels[I, J];

LSourceAlphaAry[I] := (ImageBmpMask.Canvas.Pixels[I, J] and $FF);

end;

end;

end;

end;

procedure TForm1.FormDestroy(Sender: TObject);

begin

FreeAndNil(FBuffPng);

end;

procedure TForm1.FormPaint(Sender: TObject);

begin

Canvas.Draw(0, 0, FBuffPng);

end;

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: