在FORM上加载了一个IMAGE控件,然后指定了一幅位图,再将控件的STRECH属性设为TRUE。
最后在FROM的RESIZE事件中写代码如下:
Private Sub Form_Resize()
ImgBack.Width = FmMain.Width \ 12
ImgBack.Height = FmMain.Height \ 13
End Sub
问题:拖拉窗体改变边框大小时,窗体内的图像抖动厉害,该怎么解决啦?
ImgBack.move ImgBack.left,ImgBack.top,FmMain.Width \ 12 ,FmMain.Height \ 13
这样会稍微好一点点
Bitblt
扩大部分有点闪,不过比起全屏的闪还是勉强过得去了
顺便问问你是哪的?
Private Declare Function StretchBlt Lib "gdi32.dll" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long delete a dc
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long load an image into an object (&H10 for load from file)
Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long delete an object from memory
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long link to an object
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long see if a key is pressed
Dim lngBack As Long
Dim dcBack As Long
Private Sub Form_Load()
dcBack = CreateCompatibleDC(Me.hdc)
lngBack = LoadImage(0, App.Path & "\back.bmp", 0, 0, 0, &H10)
SelectObject dcBack, lngBack
End Sub
Private Sub Form_Resize()
StretchBlt Me.hdc, 0, 0, Me.Width / Screen.TwipsPerPixelX, Me.Height / Screen.TwipsPerPixelY, dcBack, 0, 0, 270, 182, vbSrcCopy
End Sub
Private Sub Form_Unload(Cancel As Integer)
DeleteDC dcBack
DeleteObject lngBack
End Sub
doevents 加进去看看如何??
在resize里加一入这一小段代码
Static Resizeing as single
if resizeing then eixt sub
dim delay as single
resizeing=true
delay =timer
do until timer-delay >.1
doevents
loop
resizeing=false
...your code.