|
|
||||
首页
文学作品 网页设计 平面设计 程序设计 考试认证 基础办公 QQ资源 服务器架设 网站运营 网页资源
|
|
|
| 汉南在线 → 程序设计 → VB程序 | |||||||||||
----在具体应用中可能会要处理无格式的图像,在VB中可利用API函数SetDIBitsToDevice实现这一功能.下面是我在工作中用到的显示256X256大小,256灰度级图像的程序. DeclareFunctionGlobalAllocLib"kernel32"(ByValwFlagsAsLong,ByValdwBytesAsLong)AsLong DeclareFunctionGlobalLockLib"kernel32"(ByValhMemAsLong)AsLong DeclareFunctionGlobalUnlockLib"kernel32"(ByValhMemAsLong)AsLong DeclareFunctionGlobalFreeLib"kernel32"(ByValhMemAsLong)AsLong DeclareFunctionDeleteDCLib"gdi32"(ByValHDCAsLong)AsLong DeclareFunctionDeleteObjectLib"gdi32"(ByValhObjectAsLong)AsLong DeclareFunctionSetDIBitsToDeviceLib"gdi32"(ByValHDCAsLong,ByValxAsLong,ByValyAsLong,ByValdxAsLong,ByValdyAsLong,ByValSrcXAsLong,ByValSrcYAsLong,ByValScanAsLong,ByValNumScansAsLong,BitsAsAny,BitsInfoAsBITMAPINFO,ByValwUsageAsLong)AsLong Typergbquad rgbBlueAsByte rgbGreenAsByte rgbRedAsByte rgbReservedAsByte EndType TypePALETTEENTRY peRedAsByte peGreenAsByte peBlueAsByte peFlagsAsByte EndType TypeBITMAPFILEHEADER bfTypeAsInteger bfSizeAsLong bfReserved1AsInteger bfReserved2AsInteger bfOffBitsAsLong EndType TypeBITMAPINFOHEADER biSizeAsLong biWidthAsLong biHeightAsLong biPlanesAsInteger biBitCountAsInteger biCompressionAsLong biSizeImageAsLong biXPelsPerMeterAsLong biYPelsPerMeterAsLong biClrUsedAsLong biClrImportantAsLong EndType TypeBITMAPINFO bmiHeaderAsBITMAPINFOHEADER bmiColors(0To255)Asrgbquad EndType GlobalConstSRCCOPY=&HCC0020'dest=source GlobalConstsrcand=&H8800C6'dest=sourceanddest GlobalConstsrcor=&HEE0086'dest=sourceordest PublicConstCOLORONCOLOR=3 PublicConstDIB_RGB_COLORS=0'colortableinRGBs PublicConstDIB_PAL_COLORS=1' colortableinpaletteindices GlobalConstGMEM_MOVEABLE=&H2 '--------以上为定义部分,可放在一个BAS文件中-------- DimxAsLong,iiAsInteger Dimw1AsLong,h1AsLong Dimbitmapinfo_hAsBITMAPINFOHEADER, bitmapfile_hAsBITMAPFILEHEADER DimlpInitInfoAsBITMAPINFO Dimt_rgbquad(0To255)Asrgbquad DimpLogPalAsLOGPALETTE DimlengAsLong Dimt_buf()AsByte'图像数据buffer OnErrorGoToError_process 'Setuperrorhandler. 'Openthefile pfile1$="c:\fcg\test.d" 'test.d为256X256大小,256灰度级的无格式图像文件 fd=FreeFile w1=256'图像宽度 h1=256'图像高度 leng=w1*h1 ReDimt_buf(leng)AsByte Openpfile1$ForBinaryAs#fd Get#fd,,t_buf Close'Closethefile leng=w1*h1 bitmapfile_h.bfType=19778'"BM" bitmapfile_h.bfSize=1078 h1*w1 bitmapfile_h.bfReserved1=0 bitmapfile_h.bfReserved2=0 bitmapfile_h.bfOffBits=1078 bitmapinfo_h.biSize=40 bitmapinfo_h.biWidth=w1 bitmapinfo_h.biHeight=h1 bitmapinfo_h.biPlanes=1 bitmapinfo_h.biBitCount=8 bitmapinfo_h.biCompression=0 bitmapinfo_h.biSizeImage=0 bitmapinfo_h.biXPelsPerMeter=0 bitmapinfo_h.biYPelsPerMeter=0 bitmapinfo_h.biClrUsed=256 Forii=0To255'设置色表为256灰度 t_rgbquad(ii).rgbBlue=CByte(ii) t_rgbquad(ii).rgbGreen=CByte(ii) t_rgbquad(ii).rgbRed=CByte(ii) 't_rgbquad.rgbReserved=0 Nextii lpInitInfo.bmiHeader=bitmapinfo_h Forii=0To255 lpInitInfo.bmiColors(ii)=t_rgbquad(ii) Nextii 'picture1为一个picture控件, 用于显示无格式256灰度级图像 x=SetDIBitsToDevice(picture1.HDC,0,0, w1,h1,0,0,0,h1,t_buf(0),lpInitInfo, 0)'显示图像 x=GlobalUnlock(hPal)'释放资源 x=GlobalFree(hPal) GoToNormal_exit Error_process: Msgbox"程序运行出错!" Normal_exit:->
| |||||||||||
| >> 相关文章 | |||||||||||
|
授权使用:汉南在线 http://hnzx.hzwz.net/ 经营许可证:陕ICP备05000109号 Powered by:汉南在线 Copyright (c) 2002-2008 汉南在线. All Rights Reserved . |