这也像现成的?自己写代码咯! 我程序里的一段代码:MainImage.Stretch:=True; MainImage.AutoSize:=False; if (MainImage.Height/(MainImage.Width+1))>(PicPanel.Height/(PicPanel.Width+1)) then begin MainImage.Height:=PicPanel.Height; If MainImage.Height=0 then MainImage.Height:=MainImage.Height+1; MainImage.Width:=Trunc(MainImage.Height*(PicX/PicY)); MainImage.Top:=0; MainImage.Left:=Trunc((PicPanel.Width-MainImage.Width)/2); end else begin MainImage.Width:=PicPanel.Width; MainImage.Height:=Trunc(MainImage.Width*(PicY/PicX)); MainImage.Top:=Trunc((PicPanel.Height-MainImage.Height)/2); MainImage.Left:=0; end;
用SetStretchBltMode设为把图象缩放模式设为HALFTONE,再调用StretchBlt函数缩放。
SetStretchBltMode和StretchBlt都是winapi,使用也不复杂,可查相关帮助
我程序里的一段代码:MainImage.Stretch:=True;
MainImage.AutoSize:=False;
if (MainImage.Height/(MainImage.Width+1))>(PicPanel.Height/(PicPanel.Width+1)) then
begin
MainImage.Height:=PicPanel.Height;
If MainImage.Height=0 then
MainImage.Height:=MainImage.Height+1;
MainImage.Width:=Trunc(MainImage.Height*(PicX/PicY));
MainImage.Top:=0;
MainImage.Left:=Trunc((PicPanel.Width-MainImage.Width)/2);
end
else
begin
MainImage.Width:=PicPanel.Width;
MainImage.Height:=Trunc(MainImage.Width*(PicY/PicX));
MainImage.Top:=Trunc((PicPanel.Height-MainImage.Height)/2);
MainImage.Left:=0;
end;