请问怎么样实现图象的放大和宿小功能?(50分)

  • 主题发起人 主题发起人 笨猪
  • 开始时间 开始时间

笨猪

Unregistered / Unconfirmed
GUEST, unregistred user!
用TCanvas.CopyRect()和TCanvas.Draw()来实现图象显示。
用TCanvas.StretchDraw来控制图象的放大或缩小
 
image的stretch设为true
控制image控件的大小就可以了
 
用TCanvas.CopyRect()和TCanvas.Draw()来实现图象显示。
用TCanvas.StretchDraw来控制图象的放大或缩小
也可以用api函数bitblt来实现
 
用setstretchbltmode,stretchblt来实现应该是最好的。
 
zjh2002的方法可以,setstretchbltmode设置可以减小图象失真度,为提高速度
一般在内存中处理
 
能给出例子简单的例子给俺看看吗?
 
procedure TMainForm.ZoominClick(Sender: TObject); //放大
var

bmp:TBITMAP;
begin

begin
bmp:=Tbitmap.Create;
image1.AutoSize:=true;
bmp.Width:=trunc(1.1*image1.width);
bmp.Height:=trunc(1.1*image1.Height);
SetStretchBltMode(Bmp.Canvas.Handle,HalfTone);
stretchblt(bmp.Canvas.Handle,0,0,bmp.Width,bmp.Height,
image1.Picture.Bitmap.Canvas.Handle,0,0,image1.Width,image1.height,srccopy);
image1.Picture.Bitmap.Assign(bmp);
bmp.Free;
end;
 
我也在做这个,用了个没什么内函的方法,直接把image边框放大
procedure TForm3.SpeedButton2Click(Sender: TObject);
begin
image1.AutoSize:=false;
image1.Stretch:=true;
//让图片在中间显示
image1.Left:=image1.Left-trunc((image1.Width)/2);
image1.Top:=image1.Top-trunc((image1.Height)/2);
//边矩两倍两倍的变,变得很大次就死机了,你可以试试^O^
image1.Height:=image1.Height * 2;
image1.Width:=image1.Width * 2;
end;
 
多人接受答案了。
 
后退
顶部