程序里面不想用到picture控件,要用到image控件
因为我要把图片内存中处理以后,添加到image中,但是image没有设备句柄
比如象api函数bitblt,怎么把内存设备中的图片传到image中
只要不用loadpicture函数,请各位给个好的建议和思路

解决方案 »

  1.   

    可以不用代码,而在属性框里操作么 ?
    (1)找到它的picture属性 加载图片。
    或(2)利用剪切板把图片paste上去
      

  2.   

    还不如自己写个类,画在窗体上。
    有这点功夫早完成了。下列代码是我写的一个图形软件的一部分,
    是大家熟悉的图形软件的图元外框的类(不是很完整,但可以说明问题)可以参考:调用的时候在创建新对象,然后把事件传进来。想画的时候调用Draw就可以。VERSION 1.0 CLASS
    BEGIN
      MultiUse = -1  'True
      Persistable = 0  'NotPersistable
      DataBindingBehavior = 0  'vbNone
      DataSourceBehavior  = 0  'vbNone
      MTSTransactionMode  = 0  'NotAnMTSObject
    END
    Attribute VB_Name = "RectTracker"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = True
    Attribute VB_PredeclaredId = False
    Attribute VB_Exposed = False
    Option Explicit
    Private Const rctSize = 6 ''PixlPublic Enum eTKMouseModes
        MOUSE_OVER_CTRLPT
        MOUSE_DRAG_CTRLPT
    End EnumPublic Enum TarckerPoint
        TKTopLeft
        TKTopCEnter
        TKTopRight
        TKCenterCenter
        TKCenterLeft
        TKCenterRight
        TKBottomLeft
        TKBottomCenter
        TKBottomRight
    End EnumDim m_ptTLX As Single
    Dim m_ptTlY As SingleDim m_ptBRX As Single
    Dim m_ptBRY As SinglePublic Event Sizing(PT As TarckerPoint, X As Single, Y As Single)
    Public Event Changed()Private m_bTrackDrag As Boolean
    Private m_CtrlColor As OLE_COLOR
    Dim m_drawTarget As VariantPublic Function NewTracker(X1 As Single, Y1 As Single, X2 As Single, Y2 As Single)
        m_ptTLX = X1
        m_ptTlY = Y1
        m_ptBRX = X2
        m_ptBRY = Y2
    End Function
    Public Function Draw(Target As Variant)
        'On Error Resume Next
        m_drawTarget.Line (m_ptTLX, m_ptTlY)-(m_ptBRX, m_ptBRY), RGB(0, 0, 0), B
        
        DrawRect m_drawTarget, m_ptTLX, m_ptTlY
        DrawRect m_drawTarget, m_ptTLX, m_ptBRY
        DrawRect m_drawTarget, m_ptBRX, m_ptTlY
        DrawRect m_drawTarget, m_ptBRX, m_ptBRY
        
        DrawRect m_drawTarget, (m_ptTLX + m_ptBRX) / 2, m_ptTlY
        DrawRect m_drawTarget, (m_ptTLX + m_ptBRX) / 2, m_ptBRY
        DrawRect m_drawTarget, m_ptTLX, (m_ptTlY + m_ptBRY) / 2
        DrawRect m_drawTarget, m_ptBRX, (m_ptTlY + m_ptBRY) / 2
        
        'oTarget.Print "sdfsf"
    End Function
    Public Property Let DrawTArget(ByVal vNewValue As Variant)
        Set m_drawTarget = vNewValue
    End PropertyPrivate Sub DrawRect(Target As Variant, X As Single, Y As Single)
        Target.Line (X - rctSize * Screen.TwipsPerPixelX / 2, Y - rctSize * Screen.TwipsPerPixelY / 2)-Step(rctSize * Screen.TwipsPerPixelX, rctSize * Screen.TwipsPerPixelY), , BF
    End Sub
    Public Function MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) As Boolean
        Dim bResult As Boolean
        '
    End FunctionPublic Function MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) As Boolean
        Dim bResult As Boolean
        
    End FunctionPublic Function MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) As Boolean
        Dim m_bresult As Boolean
    End Function
      

  3.   

    你可以现把内存中的图片放到PictureBox中啊,然后Set Image1.Picture=Picture1.Image
      

  4.   

    Image1.Picture.Handle 表示一个HBITMAP
      

  5.   

    还是建议你用picture其他的也是通过他转换