在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
工作中,经常需要将bmp图片中的某个颜色修改为另外一种颜色。比如:将图片中的所有白色均修改成灰色。 平时都是拿画图板中的油漆桶工具一点一点的刷,费时又费力。(这么干好几年了 :( ) 今天抽空编了一个小软件,实现了这种功能。
代码
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Menus, StdCtrls, ExtDlgs, Buttons; type TForm1 = class(TForm) grp1: TGroupBox; img1: TImage; btn1: TButton; dlgOpenPic1: TOpenPictureDialog; btn2: TButton; grp2: TGroupBox; lbl1: TLabel; btn3: TBitBtn; btn4: TBitBtn; pnl1: TPanel; dlgColor1: TColorDialog; grp3: TGroupBox; lbl2: TLabel; btn5: TBitBtn; btn6: TBitBtn; pnl2: TPanel; procedure btn1Click(Sender: TObject); procedure btn2Click(Sender: TObject); procedure btn3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure btn3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure btn3MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure btn4Click(Sender: TObject); procedure btn5MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure btn6Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; imgbmp:TBitmap; imgpath:string; bOpen:Boolean; OriginalColor,Changedtoc:TColor; implementation {$R *.dfm} procedure TForm1.btn1Click(Sender: TObject); var height:Integer; width:Integer; h,w:Integer; begin if bOpen then begin imgbmp := TBitmap.Create; imgbmp.LoadFromFile(imgpath); imgbmp.SaveToFile(imgpath + '_bak'); height := imgbmp.Height; width := imgbmp.Width; //ShowMessage(IntToStr(width)+'--'+ IntToStr(height)); for h:= 0 to height-1 do begin for w := 0 to width-1 do begin if imgbmp.Canvas.Pixels[w,h]=OriginalColor then imgbmp.Canvas.Pixels[w,h] := Changedtoc; end; end; imgbmp.SaveToFile(imgpath); img1.Picture.LoadFromFile(imgpath); imgbmp.Free; end else ShowMessage('图片未打开'); end; procedure TForm1.btn2Click(Sender: TObject); var s1:string; begin if dlgOpenPic1.Execute then begin imgpath := dlgOpenPic1.FileName; img1.Picture.LoadFromFile(dlgOpenPic1.FileName); bOpen := True; btn1.Enabled := True; end; end; procedure TForm1.btn3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin pnl1.Color := Canvas.Pixels[x,y]; end; procedure TForm1.btn3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var Pt: TPoint; begin GetCursorPos(Pt); if Pt.X < 900 then begin OriginalColor := GetPixel(GetDC(0), pt.X, pt.Y); pnl1.Color := OriginalColor;//Form1.Canvas.Pixels[p.X,p.Y]; end; end; procedure TForm1.btn3MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin pnl1.Color := Canvas.Pixels[x,y]; end; procedure TForm1.btn4Click(Sender: TObject); begin if dlgColor1.Execute then begin OriginalColor := dlgColor1.Color; pnl1.Color := OriginalColor; end; end; procedure TForm1.btn5MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var Pt: TPoint; begin GetCursorPos(Pt); if Pt.X < 900 then begin Changedtoc := GetPixel(GetDC(0), pt.X, pt.Y); pnl2.Color := Changedtoc;//Form1.Canvas.Pixels[p.X,p.Y]; end; end; procedure TForm1.btn6Click(Sender: TObject); begin if dlgColor1.Execute then begin Changedtoc := dlgColor1.Color; pnl2.Color := Changedtoc; end; end; procedure TForm1.FormCreate(Sender: TObject); begin btn1.Enabled := false; end; end.
窗体代码
object Form1: TForm1
Left = 0 Top = 0 Caption = 'BMP'#22270#29255#39068#33394#26367#25442#22120 ClientHeight = 627 ClientWidth = 949 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object grp1: TGroupBox Left = 8 Top = 0 Width = 833 Height = 621 TabOrder = 0 object img1: TImage Left = 14 Top = 16 Width = 800 Height = 600 end end object btn1: TButton Left = 866 Top = 407 Width = 75 Height = 25 Caption = #36716#25442 TabOrder = 1 OnClick = btn1Click end object btn2: TButton Left = 866 Top = 376 Width = 75 Height = 25 Caption = #25171#24320#22270#29255 TabOrder = 2 OnClick = btn2Click end object grp2: TGroupBox Left = 847 Top = 0 Width = 98 Height = 129 Caption = #26367#25442#21069#39068#33394 TabOrder = 3 object lbl1: TLabel Left = 10 Top = 23 Width = 64 Height = 13 Caption = #26367#25442#21069#39068#33394':' end object btn3: TBitBtn Left = 11 Top = 46 Width = 30 Height = 25 Caption = #21462#33394 DoubleBuffered = True ParentDoubleBuffered = False TabOrder = 0 OnMouseMove = btn3MouseMove end object btn4: TBitBtn Left = 58 Top = 46 Width = 30 Height = 25 Caption = #36873#33394 DoubleBuffered = True ParentDoubleBuffered = False TabOrder = 1 OnClick = btn4Click end object pnl1: TPanel Left = 11 Top = 83 Width = 77 Height = 31 BevelKind = bkFlat BevelOuter = bvNone Caption = 'Color' TabOrder = 2 end end object grp3: TGroupBox Left = 847 Top = 152 Width = 98 Height = 129 Caption = #26367#25442#21518#39068#33394 TabOrder = 4 object lbl2: TLabel Left = 10 Top = 23 Width = 64 Height = 13 Caption = #26367#25442#21518#39068#33394':' end object btn5: TBitBtn Left = 11 Top = 46 Width = 30 Height = 25 Caption = #21462#33394 DoubleBuffered = True ParentDoubleBuffered = False TabOrder = 0 OnMouseMove = btn5MouseMove end object btn6: TBitBtn Left = 58 Top = 46 Width = 30 Height = 25 Caption = #36873#33394 DoubleBuffered = True ParentDoubleBuffered = False TabOrder = 1 OnClick = btn6Click end object pnl2: TPanel Left = 11 Top = 83 Width = 77 Height = 31 BevelKind = bkFlat BevelOuter = bvNone Caption = 'Color' TabOrder = 2 end end object dlgOpenPic1: TOpenPictureDialog Filter = 'Bitmaps (*.bmp)|*.bmp' Left = 277 Top = 360 end object dlgColor1: TColorDialog Left = 232 Top = 360 end end
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论