DELPHI技巧:delphi图片换肤处理优化修正代码

文章作者 100test 发表时间 2011:03:22 18:44:06
来源 100Test.Com百考试题网


  2009年下半年全国计算机等级考试你准备好了没?考计算机等级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库
  原来见过一个png图像换肤处理的文章,但其中颜色处理上有些问题,特作优化修正处理,本是回复群友的问题的,所以用的是bmp图片,png图片处理原理是一样的。代码如下:
  unit Unit1.
  interface
  uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls.
  type
  TForm1 = class(TForm)
  ColorBox1: TColorBox.
  procedure btn1Click(Sender: TObject).
  procedure ColorBox1Select(Sender: TObject).
  procedure FormPaint(Sender: TObject).
  private
  { Private declarations }
  public
  { Public declarations }
  end.
  var
  Form1: TForm1.
  implementation
  {$R *.dfm}
  procedure TForm1.btn1Click(Sender: TObject).
  var
  i, j: Integer.
  Row: pRGBTriple.
  Rgb : Longint.
  RGB_R,RGB_G,RGB_B:Byte.
  Gray: Byte.
  bmp:TBitmap.
  begin
  RGB := ColorToRGB(ColorBox1.Selected).
  RGB_R := GetRValue(RGB).
  RGB_G := GetGValue(RGB).
  RGB_B := GetBValue(RGB).
  bmp:=TBitmap.Create.
  try
  bmp.LoadFromFile(E:\Documents and Settings\siow\桌面\main.bmp).
  for i := 0 to bmp.Height - 1 do
  begin
  Row := bmp.Scanline[i].
  for j := 0 to bmp.Width - 1 do
  begin
  //灰度化
  Gray:=Trunc((Row^.rgbtRed*306 Row^.rgbtGreen*601 Row^.rgbtBlue*117 512) shr 10).
  Row^.rgbtRed := Round(255 - (255 - Gray)* (255-RGB_R)/ 255).
  Row^.rgbtGreen := Round(255 - (255 - Gray)* (255-RGB_G)/ 255).
  Row^.rgbtBlue := Round(255 - (255 - Gray)* (255-RGB_B)/ 255).
  Inc(Row).
  end.
  end.
  self.Canvas.StretchDraw(bmp.Canvas.ClipRect,bmp).
  finally
  bmp.Free.
  end.
  end.
  procedure TForm1.ColorBox1Select(Sender: TObject).
  begin
  btn1Click(nil).
  end.
  procedure TForm1.FormPaint(Sender: TObject).
  begin
  btn1Click(nil).
  end.
  end.

  特别推荐:

  #0000ff>2009年9月全国计算机等级考试时间及科目预告

  #0000ff>2009年上半年全国计算机等级考试参考答案请进入计算机考试论坛

  #0000ff>2009年全国计算机等级考试报名信息汇总

  #0000ff>2009年NCRE考试有新变化

  #0000ff>2009年全国计算机等级考试-大纲

  #0000ff>2009年上半年全国计算机二级考试试题及答案

  #0000ff>2009年上半年全国计算机等级考试试题答案汇总



相关文章


将.EXE文件放在Windows启动文件中的实现代码
计算机二级:向下拉列表添加字段的几种方法
DELPHI技巧:delphi程序中定义热键的方法
计算机二级DELPHI技巧:编写通用的程序更新模块
DELPHI技巧:delphi图片换肤处理优化修正代码
2011年计算机等级考试二级Delphi辅导讲义:Delphi客户服务器应用开发
2011年计算机等级考试二级Delphi辅导讲义:Delphi自定义部件开发
2011年计算机等级考试二级Delphi辅导讲义:开发Delphi对象式数据管理功能
2011年计算机等级考试二级Delphi辅导讲义:SQL编程
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛