|
PaintPicture
用以在 Form, PictureBox 或 Printer 上绘制图形文件(.bmp、.wmf、.emf、.cur、.ico或
.dib)的内容。不支持命名参数。
语法:
object.PaintPicture picture, x1, y1, width1, height1, x2, y2,
width2, height2, opcode
object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,带有焦点的 Form 对象缺省为
object。
Picture 必需的。要绘制到 object 上的图形源。Form 或 PictureBox 必须是 Picture 属性。
x1, y1 必需的。均为单精度值,指定在 object 上绘制 picture 的目标坐标(x-轴和y-轴)。object 的
ScaleMode 属性决定使用的度量单位。
Width1 可选的。单精度值,指示 picture 的目标宽度。object 的 ScaleMode
属性决定使用的度量单位。如果目标宽度比源宽度 (width2) 大或小,将适当地拉伸或压缩
picture。如果该参数省略,则使用源宽度。
Height1 可选的。 单精度值,指示 picture 的目标高度。object 的 ScaleMode
属性决定使用的度量单位。如果目标高度比源高度 (height2) 大或小,将适当地拉伸或压缩
picture。如果该参数省略,则使用源高度。
x2, y2 可选的。均为单精度值,指示 picture 内剪贴区的坐标(x-轴和y-轴)。object 的 ScaleMode
属性决定使用的度量单位。如果该参数省略,则缺省为 0。
Width2 可选的。单精度值,指示 picture 内剪贴区的源宽度。object 的 ScaleMode
属性决定使用的度量单位。如果该参数省略,则使用整个源宽度。
Height2 可选的。 单精度值,指示 picture 内剪贴区的源高度。object 的 ScaleMode
属性决定使用的度量单位。如果该参数省略,则使用整个源高度。
Opcode 可选的。是长型值或仅由位图使用的代码。它用来定义在将 pictur 绘制到 object 上时对 picture
执行的位操作(例如, vbMergeCopy 或 vbSrcAnd 操作符)。关于位操作符常数的完整列表,请参阅 Visual
Basic Help 文件中的 RasterOp Constants 主题。
在使用opcode时有一些限制。例如,如果资源是图标或图元文件,则只能使用 vbSrcCopy,而不能使用其他的opcode;并且,与图案
(或 SDK 术语中的"画笔"),如 MERGECOPY、 PATCOPY、 PATPAINT 和 PATINVERT,相交互的opcode实际上是同目标的
FillStyle 属性交互。
注意 Opcode
用于将按位操作传递到位图。当传递其他图象类型时将一个值给该参数会造成“无效过程调用或参数”错误。这是设计的原因。要避免这个错误,对于除位图外的图象,将
Opcode 参数置为空。
说明:
通过使用负的目标高度值 (height1) 和 / 或目标宽度值 (width1) ,可以水平或垂直翻转位图。
可以省略任何多个可选的尾部的参数
。如果省略了一个或多个可选尾部参数,则不能在指定的最后一个参数后面使用逗号。如果想指定某个可选参数,则必须先指定语法中出现在该参数前面的全部参数。
注意,在将一个.Bmp加载入 PictureBox 控件和使用 Windows API 函数 BitBlt()
添加图片之间有一点不同。当您对一个图象使用 BitBlt() 时,PictureBox 控件不知道象您使用
LoadPicture方法那样去调整大小。将 ScaleWidth 和 ScaleHeight
属性设置为图象的大小也不起作用。如果您想在使用 BitBlt 之后用 PictureBox
调整新图片的大小,必须用代码手工做,转换单位并处理边框,下面是如何这样做的一个简单示例:
Sub ResizePictureBoxToImage(pic as PictureBox, twipWd _
as Integer, twipHt as Integer)
' 该代码假设所有的单位都为缇。如果
' 不是,必须在调用该例程之前,转换为缇。
' 这里也假设图象显示在0,0处。
Dim BorderHt as Integer, BorderWd as Integer
BorderWd = Pic.Width - Pic.ScaleWidth
BorderHt = Pic.Height - Pic.ScaleHeight
pic.Move pic.Left, pic.Top, twipWd + BorderWd, _
twipHt + BorderHt
End Sub
Point
按照长整数,返回在 Form 或 PictureBox 上所指定磅的红-绿-蓝 (RGB) 颜色。不支持命名参数。
语法:object.Point(x, y)
object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,带有焦点的 Form 象缺省为
object.
x, y 必需的。均为单精度值,指示 Form 或 PictureBox 的 ScaleMode
属性中该点的水平(x-轴)和垂直(y-轴)坐标。必须用括号包括这些值。
说明:
如果由 x 和 y 坐标所引用的点位于 object 之外,Point 方法将返回 -1。
例:本示例使用 Point 方法来确定一个窗体上的一个指定点的颜色。要检验此示例,可将本例代码粘贴到一个窗体的声明部分,然后按
F5 键并单击该窗体。
Private Sub Form_Click ()
Dim LeftColor, MidColor, Msg, RightColor ' 声明变量。
AutoRedraw = -1 ' 打开AutoRedraw。
Height = 3 * 1440 ' 将高度设置为 3 英寸。
Width = 5 * 1440 ' 将宽度设置为 5 英寸。
BackColor = QBColor(1) ' 将背景设置为蓝色。
ForeColor = QBColor(4) ' 将前景设置为红色。
Line (0, 0)-(Width / 3, Height), , BF ' 红框。
ForeColor = QBColor(15) ' 将前景设置为白色。
Line (Width / 3, 0)-((Width / 3) * 2, Height), , BF
LeftColor = Point(0, 0) ' 查找左框颜色,,
MidColor = Point(Width / 2, Height / 2) ' 中框, 和
RightColor = Point(Width, Height) ' 右框。
Msg = "The color number for the red box on the left side of "
Msg = Msg & "the form is " & LeftColor & ". The "
Msg = Msg & "color of the white box in the center is "
Msg = Msg & MidColor & ". The color of the blue "
Msg = Msg & "box on the right is " & RightColor & "."
MsgBox Msg ' 显示信息。
End Sub
PSet
将对象上的点设置为指定颜色。
语法:
object.PSet [Step] (x, y), [color]
object 可选的。 对象表达式,其值为“应用于”列表中的对象。如果object 省略,具有焦点的窗体作为object。
Step 可选的。关键字,指定相对于由 CurrentX 和 CurrentY 属性提供的当前图形位置的坐标。
(x, y) 必需的。 Single (单精度浮点数),被设置点的水平( x 轴)和垂直( y 轴)坐标。
color 可选的。Long (长整型数),为该点指定的 RGB 颜色。如果它被省略,则使用当前的 ForeColor
属性值。可用 RGB 函数或 QBColor 函数指定颜色。
说明:
所画点的尺寸取决于 DrawWidth 属性值。当 DrawWidth 为 1,PSet 将一个像素的点设置为指定颜色。当
DrawWidth 大于 1,则点的中心位于指定坐标。
画点的方法取决于 DrawMode 和 DrawStyle 属性值。
执行 PSet 时,CurrentX 和 CurrentY 属性被设置为参数指定的点。
想用 PSet 方法清除单一像素,规定该像素的坐标,并用 BackColor 属性设置作为 color 参数。
这个方法不能用在 With…EndWith语句块中。
例:这个示例用 PSet 方法在窗体上画五彩碎纸。想运行这个示例,将代码放入窗体的General 部分。按 F5 并单击窗体。
Sub Form_Click ()
Dim CX, CY, Msg, XPos, YPos ' Declare variables.
ScaleMode = 3 ' 设置 ScaleMode 为像素。
DrawWidth = 5 ' 设置 DrawWidth.
ForeColor = QBColor(4) ' 设置前景为红色。
FontSize = 24 ' 设置点的大小。
CX = ScaleWidth / 2 ' 得到水平中点。
CY = ScaleHeight / 2 ' 得到垂直中点。
Cls ' 清窗体。
Msg = "Happy New Year!"
CurrentX = CX - TextWidth(Msg) / 2 ' 水平位置。
CurrentY = CY - TextHeight(Msg) ' 垂直位置。
Print Msg ' 打印消息。
Do
XPos = Rnd * ScaleWidth ' 得到水平位置。
YPos = Rnd * ScaleHeight ' 得到垂直位置。
PSet (XPos, YPos), QBColor(Rnd * 15) ' 画五彩碎纸。
DoEvents ' 进行
Loop ' 其它处理。
End Sub
|