本人现用DELPHI设计一个程序,用来模拟红绿色片方法产生立体图的过程,制作红绿色片及叠加部分已经完成,代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
inbitmap:Tbitmap;
SrcRow:pRGBArray;
i,j:integer;
begin
if opendialog1.Execute then
begin
inbitmap:=Tbitmap.Create;
inbitmap.LoadFromFile(opendialog1.FileName);
for i := 0 to inbitmap.Height- 1 do
begin
SrcRow := inbitmap.ScanLine[i];
for j := 0 to inbitmap.Width - 1 do
begin
SrcRow[j].rgbtRed:=255;
end;
end;
image1.AutoSize:=true;
image1.Picture.Bitmap := inbitmap;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
inbitmap:Tbitmap;
SrcRow:pRGBArray;
i,j:integer;
begin
if opendialog1.Execute then
begin
inbitmap:=Tbitmap.Create;
inbitmap.LoadFromFile(opendialog1.FileName);
for i := 0 to inbitmap.Height- 1 do
begin
SrcRow := inbitmap.ScanLine[i];
for j := 0 to inbitmap.Width - 1 do
begin
SrcRow[j].rgbtGreen:=255;
SrcRow[j].rgbtBlue:=255;
end;
end;
image2.AutoSize:=true;
image2.Picture.Bitmap := inbitmap;
end;end;procedure TForm1.Button3Click(Sender: TObject);
begin
image3.Picture.Bitmap:=image1.Picture.Bitmap;
image3.Picture.Bitmap.Width:=image3.Picture.Bitmap.Width+20;
image3.Picture.Bitmap.Height:=image3.Picture.Bitmap.Height+20;
image3.AutoSize :=true;
BitBlt(image3.Canvas.Handle,20,20,image2.Width,image2.Height,image2.Canvas.Handle,0,0,SRCAND);
end;
但是还有一个功能一直不得其解,因为我是新手,特来求教。就是建立4个button,分别控制image3内,image2相对于image1的上下左右的移动,并且可以设置每次移动的步长。望达人指教,谢谢。
procedure TForm1.Button1Click(Sender: TObject);
var
inbitmap:Tbitmap;
SrcRow:pRGBArray;
i,j:integer;
begin
if opendialog1.Execute then
begin
inbitmap:=Tbitmap.Create;
inbitmap.LoadFromFile(opendialog1.FileName);
for i := 0 to inbitmap.Height- 1 do
begin
SrcRow := inbitmap.ScanLine[i];
for j := 0 to inbitmap.Width - 1 do
begin
SrcRow[j].rgbtRed:=255;
end;
end;
image1.AutoSize:=true;
image1.Picture.Bitmap := inbitmap;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
inbitmap:Tbitmap;
SrcRow:pRGBArray;
i,j:integer;
begin
if opendialog1.Execute then
begin
inbitmap:=Tbitmap.Create;
inbitmap.LoadFromFile(opendialog1.FileName);
for i := 0 to inbitmap.Height- 1 do
begin
SrcRow := inbitmap.ScanLine[i];
for j := 0 to inbitmap.Width - 1 do
begin
SrcRow[j].rgbtGreen:=255;
SrcRow[j].rgbtBlue:=255;
end;
end;
image2.AutoSize:=true;
image2.Picture.Bitmap := inbitmap;
end;end;procedure TForm1.Button3Click(Sender: TObject);
begin
image3.Picture.Bitmap:=image1.Picture.Bitmap;
image3.Picture.Bitmap.Width:=image3.Picture.Bitmap.Width+20;
image3.Picture.Bitmap.Height:=image3.Picture.Bitmap.Height+20;
image3.AutoSize :=true;
BitBlt(image3.Canvas.Handle,20,20,image2.Width,image2.Height,image2.Canvas.Handle,0,0,SRCAND);
end;
但是还有一个功能一直不得其解,因为我是新手,特来求教。就是建立4个button,分别控制image3内,image2相对于image1的上下左右的移动,并且可以设置每次移动的步长。望达人指教,谢谢。
请问能不能根据我的已有程序,具体讲述一下或者给出一段范例,image.Top和image.Left应该在何处使用?谢过
end;这句的修改实现移动?请详细点告知,谢谢