主题:如何才能把内存中的大图全部保存到一个文件里?
各位大侠:
我用内存dc绘图,我的图片大小为1400*1400像素,然后用BITBLT拷贝到PictureBox上显示,现在我想把内存图形的大图(1400*1400像素)保存到一个文件里,但是我保存的文件里图形只见到屏幕可见范围(如1024*768),超过1024*768的地方是空白的,那么用什么方法可以保存超过屏幕可见范围的图片信息?或是如何才能把内存中的大图全部保存到一个文件里?
Private Sub Form_Load()
Picture1.Height = 21000 '1400像素
Picture1.Width = 21000 '1400像素
Picture1.ScaleWidth = 2002
Picture1.ScaleHeight = 2002
End Sub
Private Sub Command6_Click() '保存为文件
rem 现在我想把内存图形的大图(1400*1400像素)保存到一个文件里,
rem 但是我保存的文件里图形只见到屏幕可见范围(如1024*768),
rem 超过1024*768的地方是空白的,Picturebox民族尺寸小于屏幕则没有这种情况,
rem 那么用什么方法可以保存超过屏幕可见范围的图片信息?或是如何才能把内存
rem 中的大图全部保存到一个文件里?
Dim PictureFile As String
PictureFile = "d:\123.jpg"
SavePicture Picture1.Image, PictureFile
End Sub
Private Sub DisplayDataVersion1()
Picture1.Visible = False
Dim Cpen As Long
Dim hRgn As Long
Dim hBrush As Long
dc = CreateCompatibleDC(Picture1.hdc) '创建一个与窗体相兼容的设备场景
hBmp = CreateCompatibleBitmap(dc, Picture1.ScaleWidth, Picture1.ScaleHeight) '在内存中创建与窗体同样大小的位图
SelectObject dc, hBmp '将位图选入刚才创建的设备场景中
hBrush = CreateSolidBrush(Picture3.BackColor) ' (RGB(255, 255, 255)) ' '用纯红色创建一个实色画刷
hRgn = CreateRectRgn(0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight) '创建一个与窗体同样大小的矩形区域
FillRgn hdc, hRgn, hBrush '用创建的画刷对该区域进行填充
DeleteObject hRgn '删除以前创建的对像用于释放内存
DeleteObject hBrush
DeleteObject hBmp
DeleteDC dc
'省略上面这段则下一幅图会在这辐图基础上画
dc = CreateCompatibleDC(Picture1.hdc) '创建一个与窗体相兼容的设备场景
hBmp = CreateCompatibleBitmap(dc, Picture1.ScaleWidth, Picture1.ScaleHeight) '在内存中创建与窗体同样大小的位图
SelectObject dc, hBmp '将位图选入刚才创建的设备场景中
.......画图部分,没有问题(用到API SetPixel,LineToEx等)
rem 现在我想把内存图形的大图(1400*1400像素)拷贝到picturebox上显示,
rem 但是我只见到屏幕可见范围(如1024*768),超过1024*768的地方是看不到的
rem 现在如何才能把内存中的大图全部保存到一个文件里?Command6_Click有问题或是下面这行有问题
Call BitBlt(Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, hdc, 0, 0, vbSrcCopy) '将内存位图中的图形拷贝到picturebox上显示
DeleteObject (hBmp)
DeleteDC dc
DeleteObject Cpen
End Sub
谢谢
我用内存dc绘图,我的图片大小为1400*1400像素,然后用BITBLT拷贝到PictureBox上显示,现在我想把内存图形的大图(1400*1400像素)保存到一个文件里,但是我保存的文件里图形只见到屏幕可见范围(如1024*768),超过1024*768的地方是空白的,那么用什么方法可以保存超过屏幕可见范围的图片信息?或是如何才能把内存中的大图全部保存到一个文件里?
Private Sub Form_Load()
Picture1.Height = 21000 '1400像素
Picture1.Width = 21000 '1400像素
Picture1.ScaleWidth = 2002
Picture1.ScaleHeight = 2002
End Sub
Private Sub Command6_Click() '保存为文件
rem 现在我想把内存图形的大图(1400*1400像素)保存到一个文件里,
rem 但是我保存的文件里图形只见到屏幕可见范围(如1024*768),
rem 超过1024*768的地方是空白的,Picturebox民族尺寸小于屏幕则没有这种情况,
rem 那么用什么方法可以保存超过屏幕可见范围的图片信息?或是如何才能把内存
rem 中的大图全部保存到一个文件里?
Dim PictureFile As String
PictureFile = "d:\123.jpg"
SavePicture Picture1.Image, PictureFile
End Sub
Private Sub DisplayDataVersion1()
Picture1.Visible = False
Dim Cpen As Long
Dim hRgn As Long
Dim hBrush As Long
dc = CreateCompatibleDC(Picture1.hdc) '创建一个与窗体相兼容的设备场景
hBmp = CreateCompatibleBitmap(dc, Picture1.ScaleWidth, Picture1.ScaleHeight) '在内存中创建与窗体同样大小的位图
SelectObject dc, hBmp '将位图选入刚才创建的设备场景中
hBrush = CreateSolidBrush(Picture3.BackColor) ' (RGB(255, 255, 255)) ' '用纯红色创建一个实色画刷
hRgn = CreateRectRgn(0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight) '创建一个与窗体同样大小的矩形区域
FillRgn hdc, hRgn, hBrush '用创建的画刷对该区域进行填充
DeleteObject hRgn '删除以前创建的对像用于释放内存
DeleteObject hBrush
DeleteObject hBmp
DeleteDC dc
'省略上面这段则下一幅图会在这辐图基础上画
dc = CreateCompatibleDC(Picture1.hdc) '创建一个与窗体相兼容的设备场景
hBmp = CreateCompatibleBitmap(dc, Picture1.ScaleWidth, Picture1.ScaleHeight) '在内存中创建与窗体同样大小的位图
SelectObject dc, hBmp '将位图选入刚才创建的设备场景中
.......画图部分,没有问题(用到API SetPixel,LineToEx等)
rem 现在我想把内存图形的大图(1400*1400像素)拷贝到picturebox上显示,
rem 但是我只见到屏幕可见范围(如1024*768),超过1024*768的地方是看不到的
rem 现在如何才能把内存中的大图全部保存到一个文件里?Command6_Click有问题或是下面这行有问题
Call BitBlt(Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, hdc, 0, 0, vbSrcCopy) '将内存位图中的图形拷贝到picturebox上显示
DeleteObject (hBmp)
DeleteDC dc
DeleteObject Cpen
End Sub
谢谢