我定义了两个picturebox控件的坐标范围 picBack.Scale (0, 0)-(640, 640),picData.Scale (0, 0)-(544, 128),然后把picData里的图像考到picBack里,BitBlt picBack.hDC, 608, 608, 32, 32, picData.hDC, 0, 96, vbSrcCopy
为什么在picBack里没有显示在右下角啊,而是要偏上很多

解决方案 »

  1.   

    上图或用数字说话。
    另外你的picturebox的scalemode是使用pixel吗?
      

  2.   

    坐标单位问题,VB控件默认是twip,API函数用的都是pixel,建议先把控件的单位统一成pixel
      

  3.   

    PictureBox.PaintPicture 就是对 BitBlt 的封装,单位换算都不用你做了。
    何苦自找麻烦。
      

  4.   

    我想画一段时间内的曲线,网上查了一下,但我怎么用不了BITBIT呢
      

  5.   

    在任意位置绘制图形
    使用 PaintPicture 方法,可以在窗体、图片框和 Printer 对象上的任何地方,绘制图形。PaintPicture 方法的语法是:[object.]PaintPicture pic, destX, destY[, destWidth[, destHeight[, srcX _[, srcY[, srcWidth[, srcHeight[, Op]]]]]]]目标 object 指的是窗体、图片框或 Printer 对象,这些地方都是 pic 图片表现的处所。如果 object 被忽略了,则认为指定的就是当前的窗体。pic 参数必须是一个图片对象,它是由窗体或控件的 Picture 属性决定。destX 和 destY 参数,是按照 objec 的 ScaleMode,该图象将出现的水平和垂直位置。destWidth 和 destHeight 参数是可选项,用来设置在 object 目标中该图象的宽度和高度。srcX 和 srcY 参数是可选项,用来定义 pic 中裁剪区左上角的 x 和 y 坐标。可选的 Op 参数用来定义当在目标 object 上绘图时,在图片上执行的光栅操作(例如,AND 和 XOR)。PaintPicture 方法可代替 BitBlt Windows API 函数,在将矩形图形块从一个地方移到任意另一地方时,它可执行广泛的各种操作。例如,可以使用 PaintPicture 方法生成同一位图的多份副本,并将它们平铺在窗体上。使用这种方法,比在窗体上移动图片控件要快。下列代码是用来平铺图片控件的 100 份拷贝,并且通过给 destWidth 设置一个负值,可以使每张图片进行水平翻转。For i = 0 To 10
       For j = 0 To 10
          Form1.PaintPicture picF.Picture, j * _
             picF.Width, i * picF.Height, _
             picF.Width, -picF.Height
    Next j, i详细信息 请参阅《语言参考》的“PaintPicture 方法”。