如何在vb中实现放大镜功能.(多分)

ceq 2002-02-23 10:17:22
各位大虾,我用vb编一读取数据画图程序,在picturebox中
画出图形后,如何实现放大镜功能.即可以将图形缩小看到整个面貌,也可将
图形放大,看某一部分的细节.那位大虾能否提供方法及代码?如有将不胜
感激!!!一定给分.
另外,picturebox控件中有画点的方法吗?
...全文
510 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
danielinbiti 2002-10-06
  • 打赏
  • 举报
回复
用paintpicture 不好调节
thirdapple 2002-10-06
  • 打赏
  • 举报
回复
声明一个hDc,在这个HDC上放大后,然后再Bitblt到PictureBox上
AOX 2002-10-06
  • 打赏
  • 举报
回复
用API函数StretchBlt实现,如果需要在第二个picturebox上再次放大呢?
thirdapple 2002-02-24
  • 打赏
  • 举报
回复
谢谢你提出的图形图象方面的新问题。
你可以在Picture1画出曲线图,再把它StretchBlt函数贴在Picture2上,实现放大效果。
关于你说的图形缩小后原来的大图形并不消失的问题,可以在第二次贴图前用Picture2.cls的语句把Picture2清空。
ceq 2002-02-24
  • 打赏
  • 举报
回复
多谢各位大虾,我按各位的方法做了,可以将图片放大,但是还存在图形缩小后原来的
大图形并不消失,同时显示了两个图形的问题.
更要命的是,我需要的是放大自己根据坐标文件,自己画出的曲线图,而不是已有的.bmp或其他形式的图形.而以上方法好象只能显示位图或其他已有的图形.
还请各位大虾指点呀!!!!!
Tadpole0510 2002-02-24
  • 打赏
  • 举报
回复
按比例乘除图象是最简单的了pic.scaleheight/var1,pic.scalewidth/var2
有分吗 ?
zyl910 2002-02-23
  • 打赏
  • 举报
回复
所有的绘图方法:
====================================================================

Point 方法


按照长整数,返回在 Form 或 PictureBox 上所指定磅的红-绿-蓝 (RGB) 颜色。不支持命名参数。

语法

object.Point(x, y)

Point 方法的语法包含下列部分:

部分 描述
object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,带有焦点的 Form 象缺省为 object.
x, y 必需的。均为单精度值,指示 Form 或 PictureBox 的 ScaleMode 属性中该点的水平(x-轴)和垂直(y-轴)坐标。必须用括号包括这些值。


说明

如果由 x 和 y 坐标所引用的点位于 object 之外,Point 方法将返回 -1。
====================================================================

Line 方法


在对象上画直线和矩形。

语法

object.Line [Step] (x1, 1) [Step] (x2, y2), [color], [B][F]

Line 方法的语法有以下对象限定符和部分:

部分 描述
object 可选的。 对象表达式,其值为“应用于”列表中的对象。如果object 省略,具有焦点的窗体作为object。
Step 可选的。关键字,指定起点坐标,它们相对于由 CurrentX 和 CurrentY 属性提供的当前图形位置。
(x1, y1) 可选的。Single (单精度浮点数),直线或矩形的起点坐标。ScaleMode 属性决定了使用的度量单位。如果省略,线起始于由 CurrentX 和 CurrentY 指示的位置。
Step 可选的。关键字,指定相对于线的起点的终点坐标。
(x2, y2) 必需的。Single (单精度浮点数),直线或矩形的终点坐标。
color 可选的。Long (长整型数),画线时用的 RGB 颜色。如果它被省略,则使用 ForeColor 属性值。可用 RGB 函数或 QBColor 函数指定颜色。
B 可选的。如果包括,则利用对角坐标画出矩形。
F 可选的。如果使用了 B 选项,则 F 选项规定矩形以矩形边框的颜色填充。不能不用 B 而用 F。如果不用 F 光用 B,则矩形用当前的 FillColor 和 FillStyle 填充。FillStyle 的缺省值为 transparent。


说明

画联结的线时,前一条线的终点就是后一条线的起点。

线的宽度取决于 DrawWidth 属性值。在背景上画线和矩形的方法取决于 DrawMode 和 DrawStyle 属性值。

执行 Line 方法时, CurrentX 和 CurrentY 属性被参数设置为终点。

这个方法不能用于With...End With 语句块。
====================================================================

Circle 方法


在对象上画圆、椭圆或弧。

语法

object.Circle [Step] (x, y), radius, [color, start, end, aspect]

Circle 方法的语法有如下的对象限定符和部分:

部分 描述
object 可选的。 对象表达式,其值为“应用于”列表中的对象。如果object 省略,具有焦点的窗体作为object。
Step 可选的。关键字 ,指定圆、椭圆或弧的中心,它们相对于当前 object 的 CurrentX 和 CurrentY 属性提供的坐标。
(x, y) 必需的。 Single (单精度浮点数),圆、椭圆或弧的中心坐标。object 的 ScaleMode 属性决定了使用的度量单位。
radius 必需的。Single (单精度浮点数),圆、椭圆或弧的半径。 object 的 ScaleMode 属性决定了使用的度量单位。
color 可选的。Long (长整型数),圆的轮廓的 RGB 颜色。如果它被省略,则使用 ForeColor 属性值。可用 RGB 函数或 QBColor 函数指定颜色。
start, end 可选的。 Single (单精度浮点数),当弧、或部分圆或椭圆画完以后,start 和 end 指定(以弧度为单位)弧的起点和终点位置。其范围从 -2 pi 到 2 pi 。起点的缺省值是0; 终点的缺省值是2 * pi。
aspect 可选的。 Single (单精度浮点数),圆的纵横尺寸比。缺省值为 1.0,它在如何屏幕上都产生一个标准圆(非椭圆)。


说明

想要填充圆,使用圆或椭圆所属对象的 FillColor 和 FillStyle 属性。只有封闭的图形才能填充。封闭图形包括圆、椭圆、或扇形。

画部分圆或椭圆时,如果 start 为负,Circle 画一半径到 start,并将角度处理为正的;如果 end 为负,Circle 画一半径到 end,并将角度处理为正的。Circle 方法总是逆时针(正)方向绘图。

画圆、椭圆或弧时线段的粗细取决于 DrawWidth 属性值。在背景上画圆的方法取决于 DrawMode 和 DrawStyle 属性值。

画角度为 0 的扇形时,要画出一条半径(向右画一水平线段),这时给 start 规定一很小的负值,不要给 0。

.可以省略语法中间的某个参数,但不能省略分隔参数的逗号。您指定的最后一个参数后面的逗号是可以省略的。

Circle 执行时,CurrentX 和 CurrentY 属性被参数设置为中心点。

这个方法不能用在 With匛nd With 语句块中。
====================================================================
zyl910 2002-02-23
  • 打赏
  • 举报
回复
回答:另外,picturebox控件中有画点的方法吗?

MSDN:

PSet 方法


将对象上的点设置为指定颜色。

语法

object.PSet [Step] (x, y), [color]

PSet 方法的语法有如下对象限定符和部分:

部分 描述
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匛nd With 语句块中。
网络咖啡 2002-02-23
  • 打赏
  • 举报
回复
呵呵,学习
thirdapple 2002-02-23
  • 打赏
  • 举报
回复
谢谢你提出图形图象方面的问题。
你的问题也可以用API函数StretchBlt实现,不过需要两个PictureBox控件。
BitBlt扩展函数——StretchBlt
函数功能:函数从源矩形中复制一个位图到目标矩形,必要时按目前目标设备设置的模式进行图像的拉伸或压缩。

函数原型: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。
Chice_wxg 2002-02-23
  • 打赏
  • 举报
回复

以下是PaintPicture的帮助:
用以在 Form, PictureBox 或 Printer 上绘制图形文件(.bmp, .wmf, .emf, .ico或 .dib)的内容。不支持命名参数。

语法

object.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode

PaintPicture 方法的语法包含下列部分:

部分 描述
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 主题。
说明

通过使用负的目标高度值 (height1) 和 / 或目标宽度值 (width1) ,可以水平或垂直翻转位图。
可以省略任何多个可选的尾部的参数 。如果省略了一个或多个可选尾部参数,则不能在指定的最后一个参数后面使用逗号。如果想指定某个可选参数,则必须先指定语法中出现在该参数前面的全部参数。
Chice_wxg 2002-02-23
  • 打赏
  • 举报
回复

1、放大镜
放大两倍到窗口:
me.paintpicture picture1,0,0,picture1.scalewidth,picture1.scaleheight,0,0,picture1.scalewidth*2,picture1.scaleheight*2

2、画点用:
Picture1.PSet (1,1),vbBlack
就可以了
ceq 2002-02-23
  • 打赏
  • 举报
回复
如果能用API函数也行,请说明方法.

743

社区成员

发帖
与我相关
我的任务
社区描述
VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧