假如是缩放图片,用“PaintPicture”方法!
解决方案 »
- 有偿请熟练程序员,写个学生管理信息的小程序!
- 文本框中的 时间该如何转化成时间格式?
- 初学问题 多指教
- 如何让一个窗体最小化时隐藏到系统托盘?
- 怎么把繁体的时间(22004/8/2 AM 10:18:47) 转为简体的时间(2004-8-2 10:18:47),繁体的时间(22004/8/2 PM 10:18:47) 转为简体的时间(2004-
- listbox可以多重选择,我要一次删除选中的所有项,该怎么操作?
- 紧急求援:怎样用VB将SQL Server中的数据库设为单用户模式?
- 来论坛很久了,第一次发帖子!大家不看看?来者有分!
- 一个简单的问题?大侠们帮忙看看!!!!
- 各位帮我看看这个程序有什么错误!!
- 在vb里如何上传数据?
- 撒分问题
用以在 Form, PictureBox 或 Printer 上绘制图形文件(.bmp、.wmf、.emf、.cur、.ico或 .dib)的内容。不支持命名参数。语法object.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcodePaintPicture 方法的语法包含下列部分:部分 描述
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
函数功能:函数从源矩形中复制一个位图到目标矩形,必要时按目前目标设备设置的模式进行图像的拉伸或压缩。 函数原型:BOOL StretchBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeighDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, DWORD dwRop); 参数: hdcDest:指向目标设备环境的句柄。 nXOriginDest:指定目标矩形左上角的X轴坐标,按逻辑单位表示坐标。 nYOriginDest:指定目标矩形左上角的X轴坐标,按逻辑单位表示坐标。 nWidthDest:指定目标矩形的宽度,按逻辑单位表示宽度。 nHeightDest:指定目标矩形的高度,按逻辑单位表示高茺。 hdcSrc:指向源设备环境的句柄。 nXOriginSrc:指向源矩形区域左上角的X轴坐标,按逻辑单位表示坐标。 nYOriginSrc:指向源矩形区域左上角的Y轴坐标,按逻辑单位表示坐标。 nWidthSrc:指定源矩形的宽度,按逻辑单位表示宽度。 nHeightSrc:指定源矩形的高度,按逻辑单位表示高度。 dwRop:指定要进行的光栅操作。光栅操作码定义了系统如何在输出操作中组合颜色,这些操作包括刷子、源位图和目标位图等对象。参考BitBlt可了解常用的光栅操作码列表。 返回值:如果函数执行成功,那么返回值为非零,如果函数执行失败,那么返回值为零。Windows NT:若想获得更多的错误信息,请调用GetLastError函数。 速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:wingdi.h:库文件:gdi32.lib。
具体
Dim hdcdest, hdcsrchdcsrc = Picture1.hdchdcdest = Picture2.hdcDim x1, x2, y1, y2
nWidthdsrc = Picture1.Width
nHeightsrc = Picture1.Height
nWidthdest = 500
nHeightdest = 500
x1 = Picture1.CurrentX
y1 = Picture1.CurrentY
x2 = Picture2.CurrentX
y2 = Picture2.CurrentYDim sf As Boolean
sf = StretchBlt(hdcdest, x1, y1, nWidthdest, nHeightdest, hdcsrc, x2, y2, nWidthdsrc, nHeightsrc, &HCC0020)
PaintPicture 方法
API:
StretchBlt函数