注册 登录
编程论坛 VB6论坛

图片如何保存

老顽童989 发布于 2022-03-24 18:03, 1809 次点击
我编写了一个小程序:再窗体中放如两个图片框 Picture1 和 Picture2.在图片1中调入一个图片,
 将picture1 中的图像分解成9张图像,然后将这9张图像转放到 Picture2 中。
    程序代码如下:
   Private Sub Form_Click()
    N = 400: M = 400: K = 0
    For I = 0 To 8: K = K + 1: g = I \ 3: b = I Mod 3
  Picture2.PaintPicture Picture1.Picture, b * N, g * M, M, N, b * 400, g * 400, 400, 400, &HCC0020
  Next I
   运行成功。现在的问题是我要将Picture2存储到本地目录中。因为现在 Picture2 的属性变成了
       Picture2.PaintPicture 属性,不能按原 Picture2 的属性保存了。敬请大侠赐教。
5 回复
#2
yuma2022-03-24 18:07
只有本站会员才能查看附件,请 登录
#3
老顽童9892022-03-26 19:19
yuma 版主 出的是什么啊???
#4
风吹过b2022-03-26 19:35
以下代码测试成功

Picture2.AutoRedraw = True                  '开自动重绘,以便 image 对象有数据
Picture2.PaintPicture Picture1.Picture, 0, 0, , , , , , , vbSrcCopy       '复制图像过去,结果在 image 里,不在 Picture 里
SavePicture Picture2.Image, "d:\1.jpg"      '保存 image 里的图像
#5
风吹过b2022-03-26 19:43
注意我在  如何导出vb程序的图像文件 4楼里指出来的二个对象的区别。

这样理解吧!
对于能绘图的 控件,如 Picture、from 对象,VB6 在里面建了二个图层。
这二个图层分别是: Image 和 Picture ,位置是 Picture 在底层。
Picture 只接受载入的图像,当然也能扩展,这里暂不提。
Image  接受贴图,用户命令绘图,AutoRedraw 命令针对的就是这层的开关。
    AutoRedraw 为真时,会在内存里建立图层,否则只在显示缓冲区里建立显示。当没内存里没建立图层,所以刷新、清屏,覆盖都会导致重新显示时没有地方读数据导致空白。

#6
老顽童9892022-03-27 18:57
谢谢版主!!!
1