StretchDraw的问题 急救(100分)

  • 主题发起人 主题发起人 kokoboy
  • 开始时间 开始时间
K

kokoboy

Unregistered / Unconfirmed
GUEST, unregistred user!
我在tpaintbox上自己画了一些东东,想放大,缩小,能用StretchDraw吗,怎么用
 
不用StretchDraw,
PaintBox.Canvas.CopyRect(DestRect, Canvas, SrcRect);
 
我的piantbox放在scollbox上,paintbox要比屏幕的大,用PaintBox.Canvas.CopyRect(DestRect, Canvas, SrcRect)只能复制和屏幕一样大的.
 
procedure TForm1.DrawPaintBox;
var
Jpg: TJPEGImage;
Rect: TRect;
begin
Jpg := TJPEGImage.Create;
Jpg.LoadFromFile('c:/test.jpg');
with Rect do
begin
Left := 0;
Top := 0;
Right := 500;//放大,缩小在这里定义
Bottom := 300;
end;
PaintBox1.Canvas.StretchDraw(Rect, Jpg);
Jpg.Free;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
DrawPaintBox;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
DrawPaintBox;
end;
 
没有明白japhe的意思.
我是自己在paintbox上画了几个圆和直线,想用StretchDraw放大,缩小.不是从外面读图片.
 
StretchDraw(Rect, Jpg);
Rect:是你要画的区域(你要放大就设置的大一些,缩小就设置的小一些)
Jpg:是要画的东西(我这里只是用Jpg文件做例子)
 
我就是在paintbox上画了几个圆和直线.想用StretchDraw放大,缩小.
怎么做
如果是图片的我知道按你方法可行,但是我的源图是paintbox的画布上的几个圆和直线
 
在TBitmap.Canvas画再复制到PaintBox.Canvas
 
重画圆和直线,按比例放大(缩小)圆的半径和直线的长度
 
Bitmap := TBitmap.Create;
rect1.Left:=0;
rect1.Top:=0;
rect1.Right:=paintbox1.Width;
rect1.Bottom:=paintbox1.Height;
Bitmap.Canvas.CopyRect(rect1,paintbox1.canvas,rect1);
rect2.Left:=0;
//round(paintbox1.Width-paintbox1.Width*5/6);
rect2.Top:=0;
//round(paintbox1.Height-paintbox1.Height*5/6);
rect2.Right:=round(paintbox1.Width*5/6);
rect2.Bottom:=round(paintbox1.Height*5/6);
paintbox1.canvas.StretchDraw(rect2,Bitmap);
这样做可以吗??
怎么没反应
 
Bitmap := TBitmap.Create;
Bitmap.Width := PaintBox1.Width;
Bitmap.Height := PaintBox1.Height;
//在Bitmap.Canvas上画
PanintBox1.Canvas.CopyRect(DestR, Bitmap.Canvas, SrcR);
Bitmap.Free;
 
最好不要直接操作TPaintBox上的东西,因为图形大小变化多了以后数据会发生变化,所以最好是按e的方法,在内存里面建立一个对应的原始大小的FBitmap,然后用CopyRect或者StretchDraw效果是一样的,
 
可是我用StretchDraw
 
后退
顶部