缩小之后,重新打开后,能显示缩小后的图片。而不是视觉上的缩小。(不考虑图片质量)
解决方案 »
- delphi tidhttp控件的问题
- 需要写个小型的学校机房管理软件
- Delphi中如何固定ListView的前几列
- [讨论]关于小时候玩具——魔盘的编程
- access数据库备份,在线等
- 刚安装好Delphi7.0,不知其版本的dbGrideh在哪里下载?
- win2000的IE临时文件、Cookies、历史记录和C:\winnt\temp里的东西都在注册表中的什么地方呀?
- 为什么我在查询数据库时只能用一次
- forward的问题
- 给钱!
- 网上哪里有SQL的游标的文章?
- 在delphi中用ADO连接oralce数据库时,采用microsoft ole db provider for oracle运行时出错
//目的画布的大小!!
//你可以看看帮助!好的话,就给我加多点分吧!!!
StretchBlt //函数名
(DC,//目的画板句柄
0,//左上角x
0,//左上角y
800,//右下角x
600,//右下角y
//其实,也是你画布的长宽度;我之所以改成坐标,就是好理解一些
image1.canvas.handle,//源画布的句柄
0,//以下就一样了,不用解释了……
0,428,549,SRCCOPY);
image1.stretch:=true;
Canvas.CopyRect
Canvas.StretchDraw
而Canvas.CopyRect的实质就是调用GDI StretchBlt!
而Image.canvas的本质就是,Image.Picture.Bitmap.Canvas!详见VCLTImage=Class(TGraphicControl)
...
property Canvas: TCanvas read GetCanvas;
...
end;function TImage.GetCanvas: TCanvas;
var
Bitmap: TBitmap;
begin
if Picture.Graphic = nil then
begin
Bitmap := TBitmap.Create;
try
Bitmap.Width := Width;
Bitmap.Height := Height;
Picture.Graphic := Bitmap;
finally
Bitmap.Free;
end;
end;
if Picture.Graphic is TBitmap then
Result := TBitmap(Picture.Graphic).Canvas
else
raise EInvalidOperation.Create(SImageCanvasNeedsBitmap);
end;至于楼上的方法就只是视觉上的效果,实质并未改变!