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模拟文件拖拽

cnpack sqlite tool 2.04

Delphi opentextfiledialog用法

Delphi 如何判断clipboard剪切板中的内容的类型

Delphi 方便的文本文件操作(text)

Delphi 使控件支持鼠标滚轴消息

Delphi fdmemtable1建立缓存表

Delphi cross socket的库

Delphi 使用管道进程间通讯

Delphi字符串隐藏

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



打赏

取消

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

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

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

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

评论

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