程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 如何制作照片底片效果的圖像(即反色)

如何制作照片底片效果的圖像(即反色)

編輯:Delphi

  大家對照片的底片一定都很熟悉了,底片上的顏色與色彩鮮艷的照片的顏色是正好相反的,即反色,這也是我們制作反色圖像的核心。
  
  編程原理:你所見到的各種色彩都是由紅、綠、藍三種顏色按不同的比例混合而成的,這就是我們所說的三基色,它們的顏色值(RGB值)是 0~255 ,所以我們只需去的圖像上各個點的RGB值,然後用255減去這個值,並將這個值重新賦值給各個點,就會達到我們想要的底片效果了,下面我們看具體過程:
  
  所用函數:getRvalue:取得某一點的紅色的值
            getGvalue:取得某一點的綠色的值
            getBvalue:取得某一點的藍色的值
  
  新建一個窗體,上面放置一個image控件,autosize設為true,一個按鈕控件,用默認屬性,一個進度條控件ProgressBar,name設為p,用來顯示處理進程,下面是完整的代碼:
  
  


  unit Unit1;
  
  interface
  
  uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, shellapi,OleCtrls, SHDocVw, Menus, ExtCtrls, ComCtrls;
  
  type
  TForm1 = class(TForm)
  
  Image1: TImage;
  
  Button1: TButton;
  
  P: TProgressBar;
  
  procedure Button1Click(Sender: TObject);    
  
  private
  { Private declarations }
  
  public
  
  { Public declarations }
  
  end;
  
  var
  
  Form1: TForm1;
  
  implementation
  
  {$R *.dfm}
  
  procedure TForm1.Button1Click(Sender: TObject);
  
  var 
  
  r,g,b,i,j:integer;
  
  begin
    
    p.Max:=image1.Width;
    
    for i:=0 to image1.Width-1 do
    
    begin
      
      p.Position:=i;
      
      for j:=0 to image1.Height-1 do
      
      begin
        
      r:=255-getrvalue(image1.Canvas.Pixels[i,j]);//取得各點紅色值
  
    g:=255-getgvalue(image1.Canvas.Pixels[i,j]);//取得各點綠色值
  
    b:=255-getbvalue(image1.Canvas.Pixels[i,j]);//取得各點藍色值
  
    image1.Canvas.Pixels[i,j]:=rgb(r,g,b);//重新設置各點的rgb值
  

      end;
      
      image1.Refresh;
      
    end;
    
  end;
  
  
  end.
  


  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved