複製鏈接
請複製以下鏈接發送給好友

平滑滾屏

鎖定
平滑滾屏又稱平滑滾動,較常見於瀏覽器,是通過代碼的修改改變圖像的顯示頻率,使鼠標滾動屏幕的速度看上去更加細膩舒服,從而減少了網頁上下大幅度晃動帶來的視覺不適。
中文名
平滑滾屏
別    名
平滑滾動
參    考
應採用複製圖像的處理方法
注    意
字幕着色應先在內存區域中進行

平滑滾屏參考

平滑滾動不能依靠控件移動實現,應採用複製圖像的處理方法

平滑滾屏創建內存畫板

mDC = CreateCompatibleDC(GetDC(0))
mBitmap = CreateCompatibleBitmap(GetDC(0), Me.Width, Me.Height)
SelectObject mDC, mBitmap
SetBkMode mDC, TRANSPARENT

平滑滾屏畫板着底色

SetRect R, 0, 0, Me.Width , Me.Height
FillRect mDC,R,getsyscolorbrush(1)

平滑滾屏計算字幕長度

Private Function CalcLen(ByVal str As String) As Integer
Dim i As Integer, j As Integer, chars As String
j = 0
For i = 1 To Len(str)
chars = Mid(str, i, 1)
If Asc(chars) > 0 And Asc(chars) <256 Then
j = j + 1
Else
j = j + 2
End If
Next i
CalcLen = j
End Function
Dim perlen As Long
perlen = MulDiv(nsize, GetDeviceCaps(GetDC(0), LOGPIXELSX), 72)
BMPLen = perlen * CalcLen(str) / 2

平滑滾屏定時器移動

If CurrFrameTime - BottomFrameTime > IntervalStep2 Then
bx = bx - 1
If bx< -RectWidthOld2 Then
bx = Me.Left + Me.ScaleWidth
End If
BitBlt Me.hdc, bx, by, RectWidthOld2, RectHeight2, mDC, BottomLeft, BottomTop, SRCCOPY
BottomFrameTime = CurrFrameTime
End If

平滑滾屏注意事項

對於變化的字幕,應該在每次把內存中的圖片拷貝到顯示區域前,先用FillRect對原內存圖片進行清除,然後再實施拷貝,否則會造成顯示區域混亂不堪。
字幕着色應先在內存區域中進行,可使用SetTextColor mDC, ForeColor完成,之後的textout輸出就變成了指定顏色
創建字體的函數CreateMyFont = CreateFont(-MulDiv(nsize,GetDeviceCaps(GetDC(0), LOGPIXELSY), 72), 0, nDegrees * 10, 0,FW_NORMAL, False, False, False, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, "宋體"),可以到網上去查,那裏有詳細信息
在對字幕加粗顯示的時候,應注意對字幕長度的比例調整,公式為 現長度=原長度 * 現粗坳度 / 原粗坳度