如果能用API函数也行,请说明方法.

解决方案 »

  1.   


    1、放大镜
    放大两倍到窗口:
    me.paintpicture picture1,0,0,picture1.scalewidth,picture1.scaleheight,0,0,picture1.scalewidth*2,picture1.scaleheight*22、画点用:
    Picture1.PSet (1,1),vbBlack
    就可以了
      

  2.   


    以下是PaintPicture的帮助:
    用以在 Form, PictureBox 或 Printer 上绘制图形文件(.bmp, .wmf, .emf, .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 主题。
    说明通过使用负的目标高度值 (height1) 和 / 或目标宽度值 (width1) ,可以水平或垂直翻转位图。 
    可以省略任何多个可选的尾部的参数 。如果省略了一个或多个可选尾部参数,则不能在指定的最后一个参数后面使用逗号。如果想指定某个可选参数,则必须先指定语法中出现在该参数前面的全部参数。
      

  3.   

    谢谢你提出图形图象方面的问题。
    你的问题也可以用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。
      

  4.   

    回答:另外,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 语句块中。
      

  5.   

    所有的绘图方法:
    ====================================================================
     
    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 语句块中。
    ====================================================================
      

  6.   

    多谢各位大虾,我按各位的方法做了,可以将图片放大,但是还存在图形缩小后原来的
    大图形并不消失,同时显示了两个图形的问题.
    更要命的是,我需要的是放大自己根据坐标文件,自己画出的曲线图,而不是已有的.bmp或其他形式的图形.而以上方法好象只能显示位图或其他已有的图形.
    还请各位大虾指点呀!!!!!
      

  7.   

    谢谢你提出的图形图象方面的新问题。
    你可以在Picture1画出曲线图,再把它StretchBlt函数贴在Picture2上,实现放大效果。
    关于你说的图形缩小后原来的大图形并不消失的问题,可以在第二次贴图前用Picture2.cls的语句把Picture2清空。
      

  8.   

    按比例乘除图象是最简单的了pic.scaleheight/var1,pic.scalewidth/var2
    有分吗 ?
      

  9.   

    用API函数StretchBlt实现,如果需要在第二个picturebox上再次放大呢?
      

  10.   

    声明一个hDc,在这个HDC上放大后,然后再Bitblt到PictureBox上