700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > VB中使用GDI+进行图像缩放的实例

VB中使用GDI+进行图像缩放的实例

时间:2019-02-16 00:22:51

相关推荐

VB中使用GDI+进行图像缩放的实例

VISUAL BASIC(VB)对图形图像的处理一直以来是弱项,并受到很多人的垢病。关于图形图像的放大缩小,一般使用PICTUREBOX的PAINTPICTURE方法来处理。但这个处理方法最大的问题就是图像的失真。比方说图像中原来有网格线的,处理以后网格线会丢失,处理效果不好。后来在网上找到几个材料,是关于GDI+的用法的。试验了一下,果然效果非凡。以下为程序处理的关键代码:

Private Type GdiplusStartupInputGdiplusVersion As LongDebugEventCallback As LongSuppressBackgroundThread As Long SuppressExternalCodecs As LongEnd TypePrivate Enum GpStatus 'StatusOk = 0GenericError = 1InvalidParameter = 2OutOfMemory = 3ObjectBusy = 4InsufficientBuffer = 5NotImplemented = 6Win32Error = 7WrongState = 8Aborted = 9FileNotFound = 10ValueOverflow = 11AccessDenied = 12UnknownImageFormat = 13FontFamilyNotFound = 14FontStyleNotFound = 15NotTrueTypeFont = 16UnsupportedGdiplusVersion = 17GdiplusNotInitialized = 18PropertyNotFound = 19PropertyNotSupported = 20End EnumPrivate Declare Function GdiplusStartup Lib "gdiplus" (token As Long, inputbuf As GdiplusStartupInput, Optional ByVal outputbuf As Long = 0) As GpStatusPrivate Declare Function GdiplusShutdown Lib "gdiplus" (ByVal token As Long) As GpStatusPrivate Declare Function GdipDrawImageRect Lib "gdiplus" (ByVal graphics As Long, ByVal Image As Long, ByVal X As Single, ByVal Y As Single, ByVal Width As Single, ByVal Height As Single) As GpStatusPrivate Declare Function GdipCreateFromHDC Lib "gdiplus" (ByVal hDC As Long, graphics As Long) As GpStatusPrivate Declare Function GdipDeleteGraphics Lib "gdiplus" (ByVal graphics As Long) As GpStatusPrivate Declare Function GdipLoadImageFromFile Lib "gdiplus" (ByVal filename As String, Image As Long) As GpStatusPrivate Declare Function GdipDisposeImage Lib "gdiplus" (ByVal Image As Long) As GpStatusDim gdip_Token As LongDim gdip_Image As LongDim gdip_Graphics As Long'--------------------------------------'-- 使用者请保留作者版权'-- 作者:BEAR-BEN'-- QQ:453628001'--------------------------------------'-------------缩略图函数-----------Public Sub ShowTNImg(PBox As Object, ImagePath As String, WidthMax As Long, HeightMax As Long)LoadGDIPIf GdipCreateFromHDC(PBox.hDC, gdip_Graphics) <> 0 ThenMsgBox "出现错误!", vbCritical, "错误"GdiplusShutdown gdip_TokenEndEnd If'载入图片到内存中GdipLoadImageFromFile StrConv(ImagePath, vbUnicode), gdip_Image'使用GDI+直接从内存中缩略并绘图,GDI+有很好的反锯齿能力If GdipDrawImageRect(gdip_Graphics, gdip_Image, 0, 0, WidthMax, HeightMax) <> Ok Then Debug.Print "显示失败。。。"DisposeGDIPEnd SubPublic Sub LoadGDIP()Dim GpInput As GdiplusStartupInputGpInput.GdiplusVersion = 1If GdiplusStartup(gdip_Token, GpInput) <> 0 ThenMsgBox "加载GDI+失败!", vbCritical, "加载错误"EndEnd IfEnd SubPublic Sub DisposeGDIP()GdipDisposeImage gdip_ImageGdipDeleteGraphics gdip_GraphicsGdiplusShutdown gdip_TokenEnd Sub

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。