我用picture中间装一个image控件,这样我实现了能缩放,拖动一副很大的图片。
但是当图片很大时,缩小一些再拖动就明显感觉到一幌一幌的移动,速度很慢!不连贯。
这是为什么?在acdsee中就不会发生这种情况!想请教高手怎样解决这个问题!或责谁有仿ACDSEE的原程序提供!谢谢!

解决方案 »

  1.   

    试试这个:
    窗体上一个picturebox,一个image控件,注意:要将image控件画在picturebox中,代码如下:Option Explicit
    Private Const GWL_STYLE = (-16)
    Private Const WS_THICKFRAME = &H40000
    Private Const SWP_NOSIZE = &H1
    Private Const SWP_NOZORDER = &H4
    Private Const SWP_NOMOVE = &H2
    Private Const SWP_DRAWFRAME = &H20Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As LongPrivate Sub ControlSize(ControlName As Control, SetTrue As Boolean)
        Dim dwStyle As Long
        dwStyle = GetWindowLong(ControlName.hwnd, GWL_STYLE)
        If SetTrue Then
          dwStyle = dwStyle Or WS_THICKFRAME
        Else
          dwStyle = dwStyle - WS_THICKFRAME
        End If
        dwStyle = SetWindowLong(ControlName.hwnd, GWL_STYLE, dwStyle)
        SetWindowPos ControlName.hwnd, ControlName.Parent.hwnd, 0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME
    End Sub
    Private Sub Form_Load()
        Me.Picture1.BorderStyle = 0
        Me.Image1.Stretch = True
        Me.Image1.Move 0, 0, Me.Picture1.Width, Me.Picture1.Height
        Me.Image1.Picture = LoadPicture("c:\mm.jpg")'这里换成你的图片路径
        ControlSize Picture1, True
    End SubPrivate Sub Picture1_Resize()
        Me.Image1.Move 0, 0, Me.Picture1.Width, Me.Picture1.Height
    End Sub
      

  2.   

    我试过了!可是还是不行!我的图片很大有象素10000×3000的,如果不缩小拖动浏览没有什么问题!可是缩到70%到90%就不行了!感觉和蜗牛爬一样的慢!!!!
    神阿!救救我吧!谁知道acdsee 是怎么实现大图片浏览的!
      

  3.   

    呵呵,我想,Acdsee不可能是简单用Image来作吧?我没有做过类似的东西,但我想你可以这样试一下:
    首先,将rainstormmaster(rainstormmaster) 代码中的Image改为PictureBox,即利用两层PictureBox去嵌套,然后用API中相关的绘图函数将图片放大或者缩小放到内层的PIctureBox里,在试试。基本原理就是,将改变大小后的图片重新绘制在去作移动的工作,Image没有hDC等参数,无法往上面绘图,所以只好用PictureBox了。rainstormmaster(rainstormmaster) 看样子比较熟悉这些API,不知道我的想法可行不可行,呵呵~~~我自己没有试过。
      

  4.   

    用WebBrowser控件试一下,利用IE的功能处理图像效果不错
    不过只能处理jpg和分辨率不大gif图像(记忆中gif超过700象素就不行了)