• VB的gdi+相关声明


    模块:

    Option Explicit

    Public Declare Function GdiplusStartup Lib "gdiplus" (token As Long, inputbuf As GdiplusStartupInput, Optional ByVal outputbuf As Long = 0) As GpStatus
    Public Declare Function GdiplusShutdown Lib "gdiplus" (ByVal token As Long) As GpStatus

    Public Declare Function GdipCreateFromHDC Lib "gdiplus" (ByVal hDC As Long, graphics As Long) As GpStatus
    Public Declare Function GdipDeleteGraphics Lib "gdiplus" (ByVal graphics As Long) As GpStatus
    Public Declare Function GdipSetSmoothingMode Lib "gdiplus" (ByVal graphics As Long, ByVal SmoothingMd As SmoothingMode) As GpStatus
    Public Declare Function GdipSetInterpolationMode Lib "gdiplus" (ByVal graphics As Long, ByVal interpolation As InterpolationMode) As GpStatus
    Public Declare Function GdipSetCompositingQuality Lib "gdiplus" (ByVal graphics As Long, ByVal CompositingQlty As CompositingQuality) As GpStatus

    Public Declare Function GdipRotateWorldTransform Lib "gdiplus" (ByVal graphics As Long, ByVal angle As Single, ByVal order As MatrixOrder) As GpStatus
    Public Declare Function GdipTranslateWorldTransform Lib "gdiplus" (ByVal graphics As Long, ByVal dx As Single, ByVal dy As Single, ByVal order As MatrixOrder) As GpStatus

    Public Declare Function GdipLoadImageFromFile Lib "gdiplus" (ByVal filename As Long, Image As Long) As GpStatus
    Public Declare Function GdipDisposeImage Lib "gdiplus" (ByVal Image As Long) As GpStatus
    Public Declare Function GdipGetImageWidth Lib "gdiplus" (ByVal Image As Long, Width As Long) As GpStatus
    Public Declare Function GdipGetImageHeight Lib "gdiplus" (ByVal Image As Long, Height As Long) As GpStatus
    Public 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 GpStatus

    Public Enum MatrixOrder
    MatrixOrderPrepend = 0
    MatrixOrderAppend = 1
    End Enum

    Public Enum QualityMode
    QualityModeInvalid = -1
    QualityModeDefault = 0
    QualityModeLow = 1
    QualityModeHigh = 2
    End Enum

    Public Enum SmoothingMode
    SmoothingModeInvalid = QualityModeInvalid
    SmoothingModeDefault = QualityModeDefault
    SmoothingModeHighSpeed = QualityModeLow
    SmoothingModeHighQuality = QualityModeHigh
    SmoothingModeNone
    SmoothingModeAntiAlias
    End Enum

    Public Enum InterpolationMode
    InterpolationModeInvalid = QualityModeInvalid
    InterpolationModeDefault = QualityModeDefault
    InterpolationModeLowQuality = QualityModeLow
    InterpolationModeHighQuality = QualityModeHigh
    InterpolationModeBilinear
    InterpolationModeBicubic
    InterpolationModeNearestNeighbor
    InterpolationModeHighQualityBilinear
    InterpolationModeHighQualityBicubic
    End Enum

    Public Enum CompositingQuality
    CompositingQualityInvalid = QualityModeInvalid
    CompositingQualityDefault = QualityModeDefault
    CompositingQualityHighSpeed = QualityModeLow
    CompositingQualityHighQuality = QualityModeHigh
    CompositingQualityGammaCorrected
    CompositingQualityAssumeLinear
    End Enum

    Public Type GdiplusStartupInput
    GdiplusVersion As Long
    DebugEventCallback As Long
    SuppressBackgroundThread As Long
    SuppressExternalCodecs As Long
    End Type

    Public Enum GpStatus
    Ok = 0
    GenericError = 1
    InvalidParameter = 2
    OutOfMemory = 3
    ObjectBusy = 4
    InsufficientBuffer = 5
    NotImplemented = 6
    Win32Error = 7
    WrongState = 8
    Aborted = 9
    FileNotFound = 10
    ValueOverflow = 11
    AccessDenied = 12
    UnknownImageFormat = 13
    FontFamilyNotFound = 14
    FontStyleNotFound = 15
    NotTrueTypeFont = 16
    UnsupportedGdiplusVersion = 17
    GdiplusNotInitialized = 18
    PropertyNotFound = 19
    PropertyNotSupported = 20
    End Enum

    窗体(AutoRedraw=True)
    Option Explicit

    Dim token As Long
    Dim graphics As Long

    Dim img As Long, w As Long, h As Long

    Private Sub InitGDIPlus()
    Dim uInput As GdiplusStartupInput

    uInput.GdiplusVersion = 1
    If GdiplusStartup(token, uInput) <> Ok Then
    MsgBox "GDI+ 初始化错误。程序即将关闭。", vbCritical, "InitError"
    End
    End If
    End Sub

    Private Sub TerminateGDIPlus()
    GdipDisposeImage img
    GdipDeleteGraphics graphics

    GdiplusShutdown token
    End Sub

    Private Sub Form_Load()
    InitGDIPlus

    GdipCreateFromHDC Me.hDC, graphics
    'GdipSetSmoothingMode graphics, SmoothingModeAntiAlias
    'GdipSetInterpolationMode graphics, InterpolationModeHighQuality
    'GdipSetCompositingQuality graphics, CompositingQualityHighQuality

    GdipLoadImageFromFile StrPtr(App.Path & "1.png"), img
    GdipGetImageWidth img, w
    GdipGetImageHeight img, h

    Rotate 15, graphics, 200, 200
    End Sub

    Sub Rotate(angle As Single, g As Long, x As Single, y As Integer)
    GdipRotateWorldTransform g, angle, MatrixOrderAppend
    GdipTranslateWorldTransform g, x, y, MatrixOrderAppend
    GdipDrawImageRect g, img, -w, -h / 2, w, h
    End Sub

    Private Sub Form_Unload(Cancel As Integer)
    TerminateGDIPlus
    End Sub
  • 相关阅读:
    php-ip
    第十三讲 服务寄宿
    第十二讲:服务寄宿
    第十一讲:大消息处理
    第十讲:绑定(信道)
    第九讲:消息契约
    第八讲:数据契约版本控制
    第七讲:数据契约(2)
    第六讲:数据契约
    第五讲:异步操作
  • 原文地址:https://www.cnblogs.com/liuzhaoyzz/p/4035079.html
Copyright © 2020-2023  润新知