平滑滾屏

Else CalcLen perlen

平滑滾屏
平滑滾屏又稱平滑滾動,較常見於瀏覽器,是通過代碼的修改改變圖像的顯示頻率,使滑鼠滾動螢幕的速度看上去更加細膩舒服,從而減少了網頁上下大幅度晃動帶來的視覺不適。
參考:
平滑滾動不能依靠控制項移動實現,應採用複製圖像的處理方法
1、創建記憶體畫板
mDC = CreateCompatibleDC(GetDC(0))
mBitmap = CreateCompatibleBitmap(GetDC(0), Me.Width, Me.Height)
SelectObject mDC, mBitmap
SetBkMode mDC, TRANSPARENT
2、畫板著底色
SetRect R, 0, 0, Me.Width , Me.Height
FillRect mDC,R,GetSysColorBrush(1)
3、計算顯示的字幕長度
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
4、定時器移動
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
5、注意事項
對於變化的字幕,應該在每次把記憶體中的圖片拷貝到顯示區域前,先用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, "宋體"),可以到網上去查,那裡有詳細信息
在對字幕加粗顯示的時候,應注意對字幕長度的比例調整,公式為 現長度=原長度 * 現粗坳度 / 原粗坳度

相關詞條

熱門詞條

聯絡我們