ScaleMode主要用于在控件上画图,可以改变计量单位,如果你仅显示图片,可以不必考虑这些属性。
=================================================
ScaleMode 属性【引用MSDN】
当使用图形方法或调整控件位置时,返回或设置一个值,该值指示对象坐标的度量单位。
语法
object.ScaleMode [=
value]
ScaleMode
属性的语法包含下面部分:
部分
描述
Object
对象表达式,其值是“应用于”列表中的一个对象。
Value
一个指定度量单位的整数,“设置值”中有详细描述。
设置值
value 的设置值为:
常数
设置值
描述
VbUser
0
指出 ScaleHeight、ScaleWidth、ScaleLeft 和
ScaleTop 属性中的一个或多个被设置为自定义的值。
VbTwips
1
(缺省值)缇(每逻辑英寸为 1440
缇;每逻辑厘米为 567 个缇)。
VbPoints
2
磅(每逻辑英寸为 72
个磅)。
VbPixels
3
像素(监视器或打印机分辨率的最小单位)。
VbCharacters
4
字符(水平每个单位=120 缇;垂直每个单位=240
缇。)
VbInches
5
英寸。
VbMillimeters
6
毫米。
VbCentimeters
7
厘米。
VbHimetric
8
HiMetric
VbContainerPosition
9
控件容器使用的单位,决定控件位置。
VbContainerSize
10
控件容器使用的单位,决定控件的大小。
说明
相关的 ScaleHeight、ScaleWidth、ScaleLeft 与 ScaleTop
属性的使用,可以建立起一个带有正、负坐标的自定义坐标系统。这四个 Scale 属性与 ScaleMode
属性按下面的方式进行交互作用:
把其它任何 Scale 属性设置为任何值都将 ScaleMode 自动地设置为 0。ScaleMode 等于 0
是用户定义。
把 ScaleMode
属性设置为一个大于 0 的数,将使 ScaleHeight 和 ScaleWidth 的度量单位发生改变,并将
ScaleLeft 和 ScaleTop 设置为 0。CurrentX 和
CurrentY的设置值将发生改变以反映当前点的新坐标。
scalewidth是什么
指的是PictureBox中长度单位, 比如 1 pixel(像素) = 15 Twips(缇)
这种设置横重要, 一般来讲不要修改为Twip以外的其他单位, 否则回给编程带来麻烦
怎么用vb实现图形的旋转?
ScaleHeight、ScaleWidth 属性
当使用图形方法或调整控件位置时,返回或设置对象内部的水平 (ScaleWidth) 或垂直 (ScaleHeight) 度量单位。对于 MDIForm 对象,在设计时 是不可用的,并且在运行时是只读的。
语法
object.ScaleHeight [= value]
object.ScaleWidth [= value]
ScaleHeight 和 ScaleWidth 属性的语法包含下面部分:
部分 描述
Object 对象表达式,其值是“应用于”列表中的一个对象。
Value 一个用来指定水平或垂直度量的数值表达式。
说明
能够使用这些属性来为绘图或打印创建一个自定义的坐标比例尺。例如,语句 ScaleHeight = 100 将改变窗体实际内部高度的度量单位。取代当前高度为 n 个单位(缇、像素、…),高度将变为 100 个自定义单位。因而,50 个单位的距离就是对象的高度/宽度的一半,101 个单位的距离将超出对象 1 个单位。
为了定义基于标准度量单位的比例尺,例如缇、磅、像素、字符、英寸、毫米、或厘米应使用 ScaleMode 属性。
这些属性设置为正值将使坐标从上向下及从左向右增加。它们设置为负值将使坐标从下向上及从右向左增加。
这些属性和相关的 ScaleLeft 与 ScaleTop 属性的使用,可以建立起一个完全的带有正、负坐标的坐标系统。所有这四个 Scale 属性与 ScaleMode 属性按下面的方式进行交互作用:
把其它任何 Scale 属性设置为任何值都将使 ScaleMode 自动地设置为 0。ScaleMode 等于 0 是用户定义。
把 ScaleMode 设置为一个大于 0 的数,将使 ScaleHeight 和 ScaleWidth 的度量单位发生改变,并将 ScaleLeft 和 ScaleTop 设置为 0。另外,CurrentX 和 CurrentY 的设置值将发生改变以反映当前点的新坐标。
也可以在语句中使用 Scale 方法设置 ScaleHeight、ScaleWidth、ScaleLeft 和 ScaleTop 属性。
注意 ScaleHeight 和 ScaleWidth 属性与 Height 和 Width 属性是不一样的。
对于 MDIForm 对象,ScaleHeight 和 ScaleWidth 仅涉及窗体中未被 PictureBox 控件覆盖的区域。在 MDIForm 的 Resize 事件中应避免使用这些属性调整 PictureBox 的大小。
VB 如何打开窗口就自动用PictureBox绘图
启动vb6建立一个标准exe工程,首先添加两个图片框(picture1和picture2),添加三个命令按钮command1(caption=“正常显示”)、command2(caption=“180度倒立”)、command3(caption=“45度旋转”),双击窗体,写入以下代码:
PrivateConstSRCCOPY=&HCC0020
PrivateConstPi=3.14
PrivateDeclareFunctionSetPixelLib”gdi32”(ByValhdcAsLong, ByValxAsLong,ByValyAsLong,ByValcrColorAsLong)AsLong
PrivateDeclareFunctionGetPixelLib”gdi32”(ByValhdcAsLong, ByValxAsLong,ByValyAsLong)AsLong
PrivateDeclareFunctionStretchBltLib”gdi32”(ByValhdcAsLong, ByValxAsLong,ByValyAsLong,ByValnWidthAsLong,ByValnHeightAsLong, ByValhSrcDCAsLong,ByValxSrcAsLong,ByValySrcAsLong,ByValnSrcWidth AsLong,ByValnSrcHeightAsLong,ByValdwRopAsLong)AsLong
privateSubbmp_rotate(pic1AsPictureBox,pic2AsPictureBox,ByValtheta)‘45度旋转
Dimc1xAsInteger,c1yAsInteger
Dimc2xAsInteger,c2yAsInteger
DimaAsSingle
Dimp1xAsInteger,p1yAsInteger
Dimp2xAsInteger,p2yAsInteger

DimnAsInteger,rAsInteger
c1x=pic1.ScaleWidth\2
c1y=pic1.ScaleHeight\2
c2x=pic2.ScaleWidth\2
c2y=pic2.ScaleHeight\2
Ifc2x$#@60c2yThenn=c2yElsen=c2x
n=n-1
pic1hDC=pic1.hdc
pic2hDC=pic2.hdc
Forp2x=0Ton
Forp2y=0Ton
Ifp2x=0Thena=Pi/2Elsea=Atn(p2y/p2x)
r=Sqr(1&*p2x*p2x+1&*p2y*p2y)
p1x=r*Cos(a+theta)
p1y=r*Sin(a+theta)
c0&=GetPixel(pic1hDC,c1x+p1x,c1y+p1y)
c1&=GetPixel(pic1hDC,c1x-p1x,c1y-p1y)
c2&=GetPixel(pic1hDC,c1x+p1y,c1y-p1x)
c3&=GetPixel(pic1hDC,c1x-p1y,c1y+p1x)
Ifc0&$#@60$#@62-1ThenSetPixelpic2hDC,c2x+p2x,c2y+p2y,c0
Ifc1&$#@60$#@62-1ThenSetPixelpic2hDC,c2x-p2x,c2y-p2y,c1
Ifc2&$#@60$#@62-1ThenSetPi pic2hDC,c2x+p2y,c2y-p2x,c2
Ifc3&$#@60$#@62-1ThenSetPixelpic2hDC,c2x-p2y,c2y+p2x,c3
Next
Next
EndSub
PrivateSubCommand1_Click()‘正常复制
Picture2.Cls
px=Picture1.ScaleWidth
py=Picture1.ScaleHeight
StretchBltPicture2.hdc,px,0,-px,py,Picture1.hdc,0,0,px,py,SRCCOPY
EndSub
PrivateSubCommand2_Click()‘180度倒立
Picture2.Cls
px=Picture1.ScaleWidth
py=Picture1.ScaleHeight
StretchBltPicture2.hdc,0,py,px,-py,Picture1.hdc,0,0,px,py,SRCCOPY
EndSub
PrivateSubCommand3_Click()‘45旋转
Picture2.Cls
Callbmp_rotate(Picture1,Picture2,3.14/4)
EndSub
PrivateSubForm_Load()
OnErrorResumeNext
Me.Caption=App.Title”添加应用程序标题
Me.Left=(Screen.Width-Me.Width)/2
Me.Top=(Screen.Height-Me.Height)/2”窗体具中
Picture1.ScaleMode=3
Picture2.ScaleMode=3
EndSub
添加一个按钮,添加以下代码
private
sub
command1_click()
’设为像素模式,绘图时的单位
me.picture1.scalemode
=
3
me.picture2.scalemode
=
3
me.picture3.scalemode
=
3
’无边框模式,否则边框会减小图片
me.picture1.borderstyle
=
0
me.picture1.fillstyle
=
0
me.picture2.borderstyle
=
0
me.picture2.fillstyle
=
0
’前两个自动大小,这样可以知道图片大小
me.picture1.autosize
=
true
me.picture2.autosize
=
true
’自动重画,否则图片会消失
me.picture3.autoredraw
=
true
me.picture3.paintpicture
me.picture1.picture,
0,
0
me.picture3.paintpicture
me.picture2.picture,
me.picture1.scalewidth,
0
end
sub
以上就是关于窗体的scalemode属性用于指定全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!