动态改变画图区域的大小(image)(100分)

  • 主题发起人 主题发起人 sing66
  • 开始时间 开始时间
S

sing66

Unregistered / Unconfirmed
GUEST, unregistred user!
请问在程序运行过程中动态改变image的大小以
改变画图区域的大小,怎末实现?已经画了的图形不变.
 
设置 Image.Height, Image.Width 不行么?
 
图形不变是什么意思,比例放缩吗
 
图形不变是什么意思,改变大小后再重画,
也可试试image.Picture.Width:=改后的image.width;
image.Picture.Height:=改后的image.Height;

 
应该先改 image.Picture.width
height
然后再改 image.width
height
 
将TImage的AuotSize:=False;
Stretch(记得不是很清楚,在属性中可以找到):=False;
然后再修改Image.Picture.Width和Image.Picture.Height.
 
我现在image上画了一些底纹,使用canvas画的,然后又在image上画了一些图形,我先让画布变大,已画的图形大小,方位不变.
 
用一个足够大的Bitmap作为Buffer放在后台,每次画图的时候先画到Bitmap上,然后根据前台的画
图区域的大小从Bitmap上面CopyRect过来,这样不管你前台如何改变,已画的图不会丢掉也不会改
 
用两个IMAGE,放大时,放其中的一个,再根据比例关系把另一个上的图
复制到相应坐标
 
我已开始用superMMX的方法,但是画布上没画图时放大正常,一画图放大了的部分就
由一些乱七八糟的东西.别的方法是在给大家答复.
 
再试试,改一改 image.picture.bitmap.height
width,
我忘了是改哪个了,我的没有问题。
 

我想,要想图形,其长宽比应该不变才行。

R:=image.height div image.width ;
...
image.width:=新值;
image.Height:=image.width * R ;
 
太简单了,只需在程序中加入相关的语句,修改它的height,width就行了
 
试试这样:

你把画图的有关数据(如坐标,长度,填充模式等)以一定的格式写到

一个预先添加的 memo 中,memo 的visible属性设为false,

对image 来说,当你需要改变image的尺寸时,

1。 你先擦除原来的画图
2。 再改变image的尺寸
3。 从memo的lines[?]中提取相关数据
4。 重画原来的图
 
look at:
http://www.huzhou.zj.cn/~fhb/cc
 
有没有结论?
 
也许可以这样!!!
用一个数组来记录你所画底纹的参数;
每个数组的元素是一个结构!!!
比如:typedef paintstruc=record
x:integer;
y:integer;//起始坐标
x1:integer;
y1:integer;//终止坐标
drawtype:char;//用来表示画图的类型
还有什么颜色什么的属性自己加上好了
end;
然后,当画布变大时,根据画布变大的比例,可以计算出新的x,y,x1,y1;
然后,根据数组可以重画出原来的图形而图形大小,方位不变.

 
后退
顶部