请大家帮忙看看,这段代码有什么问题?(100分)

  • 主题发起人 主题发起人 conquer1983
  • 开始时间 开始时间
C

conquer1983

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
type
rgbp=record
R:integer;
G:integer;
B:integer;
end;

var
x:integer;
y:integer;

mymap:Tbitmap;
rgbpoint:array [0..1000,0..1000] of rgbp;

procedure getinfo(sender:Tobject);

var
color:Tcolor;
i:integer;
j:integer;
begin
x:=form1.Image1.Picture.Width;
y:=form1.Image1.Picture.Height;
for i := 0 to x-1 do
begin
for j := 0 to y-1 do
begin
color:=form1.Image1.Canvas.Pixels[i,j];
rgbpoint[i,j].R:=getrvalue(color);
rgbpoint[i,j].G:=getgvalue(color);
rgbpoint[i,j].B:=getbvalue(color);
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
red:integer;
green:integer;
blue:integer;
i:integer;
j:integer;
begin
getinfo(sender);
i:=0;
while(i<x-1) do
begin
j:=0;
while(j<y-1) do
begin
red := rgbpoint[i,j].R;
green := rgbpoint[i,j].G;
blue := rgbpoint[i,j].B;
mymap.Canvas.Pixels[i,j]:=rgb(red,green,blue);
mymap.Canvas.Pixels [i,j+1]:= rgb(red,green,blue);
mymap.Canvas.Pixels [i+1,j]:= rgb(red,green,blue);
mymap.Canvas.Pixels [i+1,j+1]:= rgb(red,green,blue);
j:=j+2;
end;
i:=i+2;
end;
form1.Image1.Picture.Bitmap.Assign(mymap);

end;

end.
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, jpeg, RxGIF;

type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
type
rgbp=record
R:integer;
G:integer;
B:integer;
end;

var
x:integer;
y:integer;

mymap:Tbitmap;
rgbpoint:array [0..1000,0..1000] of rgbp;

procedure getinfo(sender:Tobject);

var
color:Tcolor;
i:integer;
j:integer;
bmp: TBitmap;
begin
bmp := TBitmap.Create;
bmp.Assign(form1.Image1.Picture.Graphic);

x := bmp.Width;
y := bmp.Height;
// x:=form1.Image1.Picture.Width;
// y:=form1.Image1.Picture.Height;
for i := 0 to x-1 do
begin
for j := 0 to y-1 do
begin
//color:=form1.Image1.Canvas.Pixels[i,j];
color := bmp.Canvas.Pixels[i, j];
rgbpoint[i,j].R:=getrvalue(color);
rgbpoint[i,j].G:=getgvalue(color);
rgbpoint[i,j].B:=getbvalue(color);
end;
end;
FreeAndNil(bmp);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
red:integer;
green:integer;
blue:integer;
i:integer;
j:integer;
begin
mymap := TBitmap.Create;
mymap.Width := image1.Picture.Graphic.Width;
mymap.Height := image1.Picture.Graphic.Height;
getinfo(sender);
i:=0;
while(i<x-1) do
begin
j:=0;
while(j<y-1) do
begin
red := rgbpoint[i,j].R;
green := rgbpoint[i,j].G;
blue := rgbpoint[i,j].B;
mymap.Canvas.Pixels[i,j]:=rgb(red,green,blue);
mymap.Canvas.Pixels [i,j+1]:= rgb(red,green,blue);
mymap.Canvas.Pixels [i+1,j]:= rgb(red,green,blue);
mymap.Canvas.Pixels [i+1,j+1]:= rgb(red,green,blue);
j:=j+2;
end;
i:=i+2;
end;
form1.Image1.Picture.Graphic.Assign(mymap);
FreeAndNil(mymap);
end;

end.
 
后退
顶部