回 帖 发 新 帖 刷新版面

主题:表单背景图片的问题

想把已有的一张照片设置为表单的背景(照片比表单小许多)。如果用表单的picture属性,则发现照片变成几乎有四个照片在表单上“平铺”显示了;如果用image控件,则发现运行后,照片无法随表单大小改变而改变,即:如果表单最大化了,而照片没有跟着一起成比例地拉伸,并且失真得很利害,即使是设置image的stretch属性也没有用。VFP6.0

回复列表 (共3个回复)

沙发

随表单变化的属性不是 .anchor 吗?

板凳

[quote]随表单变化的属性不是 .anchor 吗?[/quote]
没有用过,请详细讲解。谢谢

3 楼

Visual FoxPro 9.0 语言参考 
Anchor 属性 *NEW 
请参阅 
 全部折叠 全部展开 
定义在调整容器大小时,可视控件锚定到父容器的哪些边。设计和运行时可读/写。

 
Control.Anchor [= nValue]
 

属性值
nValue 
指定一个决定控件锚定行为的 Bit 值。下表描述了可以对 nValue 设置或相加的 Bit 值。 *使用方法译者注:决定好锚定方法后,在 Anchor 属性中输入用加法计算出的、表中对应的 Bit 值之和(如示例表中说明部分的蓝色解释),也可以使用Anchor生成器。另外,Anchor属性不会受到LEFT、HEIGHT等属性的范围限制,即控件的这些属性自动在 其属性值的范围内取值。 位置 Bit 值 Bit 号 冲突值 说明 
上 左
 0
  
  
 (默认值) 控件锚定到容器的上和下边,且不会改变上和左边之间的距离。*即:不锚定
 
上 绝对
 1
 0
 16, 512
 控件锚定到容器的上边,且不会改变与上边之间的距离。
 
左 绝对
 2
 1
 32, 256
 控件锚定到容器的左边,且不会改变与左边之间的距离。
 
下 绝对
 4
 2
 64, 512
 控件锚定到容器的下边,且不会改变与下边之间的距离。
 
右 绝对
 8
 3
 128, 256
 控件锚定到容器的右边,且不会改变与右边之间的距离。
 
上 相对
 16
 4
 1, 512
 控件锚定到容器的上边,且保持与上边的相对距离。
 
左 相对
 32
 5
 2, 256
 控件锚定到容器的左边,且保持与左边的相对距离。
 
下 相对
 64
 6
 4, 512
 控件锚定到容器的下边,且保持与下边的相对距离。
 
右 相对
 128
 7
 8, 256
 控件锚定到容器的右边,且保持与右边的相对距离。
 
固定水平大小
 256
 8
 2, 8, 32, 128
 锚定控件的中心相对于左边和右边,但保持水平大小。
 
固定垂直大小
 512
 9
 1, 4, 16, 64
 锚定控件的中心相对于上边和下边,但保持垂直大小。
 
下表说明了 Anchor 属性常用设置的例子。 控件 nValue 说明 
TextBox 或 EditBox
 10
 调整父控件大小时,调整被锚定控件的水平大小。*译者注:2+8=10 (左绝对+右绝对)
 
CommandButton
 12
 显示两个一组的控件,例如,右下角的 OK 和 Cancel。*译者注:4+8=12 (下绝对+右绝对)
 
CommandButton
 128 和 32
 保持命令按钮距离左边和右边的位置。*译者注:128(右相对) & 32(左相对)
 
CommandButton
 260
 保持控件中心距离表单底部的位置。*译者注:4+256=260 (下绝对+固定水平大小)
 
有效控件*译者加
 15
 随容器放大或缩小控件,控件四边保持与容器四边的绝对距离。1+2+4+8=15
 
有效控件*译者加
 240
 随容器放大或缩小控件,控件四边保持与容器四边的相对距离。16+32+64+128=240
 

说明
应用于:CheckBox 控件 | ComboBox 控件 | CommandButton 控件 | CommandGroup 控件 | Container 对象 | Control 对象 | EditBox 控件 | Grid 控件 | Image 控件 | Label 控件 | Line 控件 | ListBox 控件 | OLE 绑定控件 | OLE 容器控件 | OptionButton 控件 | OptionGroup 控件 | PageFrame 控件 | Shape 控件 | Spinner 控件 | TextBox 控件

当控件的 Anchor 属性是初始设置时(即:当控件实例化时),锚定动作在运行时基于控件的坐标。它并不是基于控件的当前位置。因此,即使移动了控件,锚定动作仍保持在控件的原始位置。该行为解释了 0 和 3(1+2) 的 Anchor 值之间的差别。

例如,假设表单上存在一个 CommandButton 控件,且控件的 Anchor 属性设置为 3。通过在控件的 Click 事件中插入以下代码,并单击按钮,就可以移动命令按钮:

  复制代码 
This.Left = This.Left + 10
 

但是,当调整表单大小时,控件返回到原始位置。

提示: 
如果您想在控件移动之后,根据控件的当前位置进行锚定,可以重置控件的 Anchor 属性为 0,然后还原为 3。例如,在命令按钮的 Click 事件中使用以下代码,当单击它时移动命令按钮,但在调整表单大小时仍保留控件的当前位置:  
  复制代码 
This.Left = This.Left + 10
This.Anchor = 0
This.Anchor = 3
 

以下容器中控件的 Anchor 属性的设置有效:

CommandGroup 控件 
Container 对象 
Control 对象 
Form 对象 
OptionGroup 控件 
Page 对象 
ToolBar 和 Column 对象中的控件忽略 Anchor 属性的设置。

如果锚定值设置为对边,则可以调整控件的大小,例如,左边与右边(10)或上边与下边(5)。如果设置某个单独的边,则仅会移动控件。

如果不设置明确的轴的 Bit 值,则在调整容器大小时控件的位置不会相对于轴改变(译者注:对于256和512而言)。例如,Bit 号 1, 3, 5, 7 和 10 影响上下尺寸。

不能设置彼此冲突的 Bit 值。包括以下 Bit 值:

相同边的绝对与相对 Bit 值,例如为 17 的 nValue 。 
相同轴边的固定大小与边的 Bit 值,例如为 258 或 513 的 nValue 。 
有关冲突值的描述,请参见 nValue 表中所列的值。

我来回复

您尚未登录,请登录后再回复。点此登录或注册