解决方案 »
- 为什么一列中有的值是null有的值是‘’
- 用dbgrid显示adoquery查询的图片,达人进!
- 有没有人用过条码机开发过打印程序(型号:TSC,TTP-243E)
- 一个程序如何控制另一个程序?
- 急--急--急 问 delphi 中的 database 控件与 interbase 进行远程连接的问题
- DLL小问题
- 各位高手,请问如何在delphi的dbgird的标题栏中显示字段的描述值,而不是字段名称
- 在dephi6中使用ado连接sqlserver2000有什么问题吗
- 请问那儿有delphi ado方面的书down
- 如何在本窗口动态改变另一个窗口的caption?不止改变一次。
- D7升级到XE2函数出错
- 关于使用 idhttp 提交dedecms后台的问题
//图片放大缩小
procedure ResizeBmp(SrcBM: TBitmap; zoom: Single);//<<<<
var
rect: TRect;
NewW, NewH, PicW, PicH: Integer;
tem: Single;
bmp:TBitmap; //<<<<
begin
PicW := SrcBM.Width;
PicH := SrcBM.Height;
tem := PicW;
NewW := trunc(tem * zoom);
tem := PicH;
NewH := trunc(tem * zoom); bmp:=TBitmap.Create;//<<<<
with bmp do //<<<<
begin
Width := NewW;
Height := NewH;
rect:= Bounds(0,0,Width,Height);//<<<<
Canvas.StretchDraw(rect, TGraphic(SrcBM));
end; SrcBM.Assign(bmp); //<<<<
bmp.Free; //<<<<
end;//调用
procedure TMainForm.ZoomInClick(Sender: TObject);
var
ZoomVal:Single;
begin
ZoomVal:=ZoomVal+0.2;
ResizeBmp(img1.Picture.Bitmap,ZoomVal); //<<<<
end;
如果是通过代码动态加载图片,jpg、bmp都可以
请问,为什么当我先点了放大按钮几下,再点缩小的按钮动作时,还是放大动作?
procedure TMainForm.ZoomInClick(Sender: TObject);
begin
ZoomVal:=ZoomVal+0.1;
ResizeBmp(Image1.Picture.Bitmap,ZoomVal);
end;procedure TMainForm.ZoomOut1Click(Sender: TObject);
begin
ZoomVal:=ZoomVal-0.1;
ResizeBmp(Image1.Picture.Bitmap,ZoomVal);
end;
Bitmap : TBitmap;
Jpg : TJPEGImage;
WicImg: TWICImage;
Factory: IWICImagingFactory;
Scaler: IWICBitmapScaler; //图像比例变换接口
begin
WicImg := TWICImage.Create;
Bitmap := TBitmap.Create;
Jpg := TJPEGImage.Create;
try
Jpg.Assign(AGraphic);
Jpg.CompressionQuality := 100;
Jpg.Compress;
Jpg.SaveToFile(TAppDir.GetAppTempDir + 'temp.jpg');
WicImg.LoadFromFile(TAppDir.GetAppTempDir + 'temp.jpg');
Factory := TWICImage.ImagingFactory;
Factory.CreateBitmapScaler(Scaler);
Scaler.Initialize(WicImg.Handle, AWidth, AHeight, WICBitmapInterpolationModeFant);
WicImg.Handle := IWICBitmap(Scaler); //ufUploadFile.UploadFile(WicImg, AFileName, UploadType);
//WicImg.SaveToFile('C:\s2-wic500.jpg');
finally
Scaler := nil;
Factory := nil;
WicImg.Free;
Jpg.Free;
Bitmap.Free;
end;
end;
改成
CopyRect可能多用个临时bitmap,不要用StretchDraw