zoukankan      html  css  js  c++  java
  • VB6之GDI+加载PNG图片

    原生的VB6不支持PNG个图片,因为刚有VB的时候还没有PNG的概念呢。不过,利用GDI+加载解析个PNG简直是砍瓜切菜般简单。

    GDI+的模块是我在网上下载的,地址应该是:http://vistaswx.com/blog/article/gdip-tutorial-6-image

    上代码:

     1 'code by lichmama from cnblogs.com
     2 '@vb6.0 gdi+ png
     3 Private Sub DrawPng(ByVal pngfile As String, _
     4     Optional Left As Long = 0&, _
     5     Optional Top As Long = 0&, _
     6     Optional zoom As Single = 1#)
     7     
     8     Dim Graphic As Long
     9     Dim Image As Long
    10     Dim imgWidth As Long
    11     Dim imgHeight As Long
    12     
    13     Call GdipCreateFromHDC(Me.hDC, Graphic)
    14     Call GdipSetSmoothingMode(Graphic, SmoothingModeAntiAlias)
    15     Call GdipLoadImageFromFile(StrPtr(pngfile), Image)
    16     Call GdipGetImageWidth(Image, imgWidth)
    17     Call GdipGetImageHeight(Image, imgHeight)
    18     Call GdipDrawImageRect(Graphic, Image, 10& + Left, 10& + Top, imgWidth * zoom, imgHeight * zoom)
    19     
    20     Call GdipDisposeImage(Image)
    21     Call GdipDeleteGraphics(Graphic)
    22 End Sub
    23 
    24 Private Sub Command1_Click()
    25     Call DrawPng("D:迅雷下载
    io-2-icons
    io-2-tulio-icon-2.png", -70&, -30&)
    26     Call DrawPng("D:迅雷下载
    io-2-icons
    io-2-linda-icon-2.png", 300&)
    27     Call DrawPng("D:迅雷下载
    io-2-icons
    io-2-logo.png", 250, 250&, 0.5)
    28     Call DrawPng("D:迅雷下载
    io-2-icons
    io-2-kids-icon.png", 225&, 220&, 0.25)
    29     Call DrawPng("D:迅雷下载
    io-2-icons
    io-2-nico-&-pedro-icon.png", 350&, 200&, 0.25)
    30     Call DrawPng("D:迅雷下载
    io-2-icons
    io-2-luiz-icon.png", 625&, 300&, 0.25)
    31 End Sub
    32 
    33 Private Sub Form_Load()
    34     Call InitGDIPlus
    35 End Sub
    36 
    37 Private Sub Form_Unload(Cancel As Integer)
    38     Call TerminateGDIPlus
    39 End Sub

    贴张图:

    从资源文件加载PNG:

    Private Function GdipCreateImageFromStream(ByVal resid As Integer, _
        ByVal restype As String) As Long
    
        Dim Image As Long
        Dim ResData() As Byte
        Dim IStream As Object
        Dim hGlobal As Long
        Dim pMem As Long
        
        ResData = LoadResData(resid, restype)
        hGlobal = GlobalAlloc(GMEM_MOVEABLE, UBound(ResData) + 1)
        pMem = GlobalLock(hGlobal)
        If pMem = 0 Then
            Debug.Print "Global Alloc Failed."
            Erase ResData
            Exit Function
        End If
        Call RtlMoveMemory(ByVal pMem, ResData(0), UBound(ResData) + 1)
        Call GlobalUnlock(hGlobal)
        Call CreateStreamOnHGlobal(hGlobal, False, IStream)
        Call GdipLoadImageFromStream(IStream, Image)
    
        Set IStream = Nothing
        Call GlobalFree(hGlobal)
        GdipCreateImageFromStream = Image
    End Function
    Private Sub Command1_Click()
        Dim Graphics As Long
        Dim Image As Long
        
        Call GdipCreateFromHDC(Me.hDC, Graphics)
        Call GdipSetSmoothingMode(Graphics, SmoothingModeAntiAlias)
        '调用方式如下
        Image = GdipCreateImageFromStream(101, "PNG")
        Call GdipDrawImage(Graphics, Image, 0&, 0&)
        
        Call GdipDisposeImage(Image)
        Call GdipDeleteGraphics(Graphics)
    End Sub

    贴张图:

  • 相关阅读:
    整合Spring与Hibernate
    基本正则
    vue权限指令
    vue数字动态转换大写
    element ui 表格动态生成多级表头、一级表头,可无限嵌套
    vuex和vue-router全家桶
    element表格内容过多title提示
    HBuilder打包App方法
    mui底部选项卡切换页面
    mui框架的地步选项卡公用加载对应页面demo
  • 原文地址:https://www.cnblogs.com/lichmama/p/3863370.html
Copyright © 2011-2022 走看看