Delphi实现图像反色实例4种方法


本文整理自网络,侵删。

 Delphi实现图像反色实例4种方法
procedure TForm1.Button1Click(Sender: TObject);
var
MyDC: HDC;
begin
MyDC := GetDC(Form1.Handle);
if not PatBlt(MyDC,
Image1.Left,
Image1.Top,
Image1.Left + Image1.Width,
Image1.Top + Image1.Height,
DSTINVERT) then
ShowMessage('ERROR :~(');
end;


procedure TForm1.Button2Click(Sender: TObject);
var
BMP: TBitmap;
begin
Bmp := TBitmap.Create;
try
Bmp.Width := Image1.Picture.Bitmap.Width;
Bmp.Height := Image1.Picture.Bitmap.Height;
Bitblt(Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, Image1.Picture.Bitmap.Canvas.Handle, 0, 0, NOTSRCCOPY);
Image2.Picture.Bitmap.Assign(Bmp);
finally
Bmp.Free;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
invertrect(image2.Canvas.Handle, image1.ClientRect);
image2.Repaint;

end;

procedure TForm1.Button5Click(Sender: TObject);
var
p: PByteArray;
x, y: Integer;
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
Bmp.Assign(Image1.Picture.Bitmap);
Bmp.PixelFormat := pf24Bit;
for y := 0 to Bmp.Height - 1 do
begin
p := Bmp.scanline[y];
for x := 0 to Bmp.Width - 1 do
begin
begin
p[x * 3] := not p[x * 3];
p[x * 3 + 1] := not p[x * 3 + 1];
p[x * 3 + 2] := not p[x * 3 + 2];
end
end;
end;
Image2.Picture.Bitmap.Assign(Bmp);
Bmp.Free;
end;

相关阅读 >>

Delphi执行cmd命令

Delphi 解决android 9上无法使用http协议

解决Delphi程序在非中文系统下乱码

Delphi中查找指定文件的例程

如何把 Delphi 自带的内存泄露写到日志

Delphi查找特定的exe是否在运行

Delphi 根据字符串分隔符位置取值

Delphi10.3通过rest单元使类和json数据互相转换

Delphi 服务操作

Delphi xe httpencode

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...