RT~出于某些原因 需要對螢屏的某一部分影像進行反色處理并且顯示到picture控制元件上,但是每隔0.1秒一次的重繪弄得一直閃白,不知道該如何避免,因為是新手,so...gdi不怎么會,聽說雙快取能解決,但是vb6不知道該怎么實作..所以想問問各位大大該怎么才能避免閃白呢。。
Private Sub Form_Load()
rtn = GetWindowLong(Hwnd, GWL_EXSTYLE)
rtn = rtn Or WS_EX_LAYERED
SetWindowLong Hwnd, GWL_EXSTYLE, rtn
SetLayeredWindowAttributes Hwnd, &HFF&, 120, LWA_COLORKEY'這部分是挖透明的,可以略過
Picture1.Move 0, 0, Form1.Width, Form1.Height
Timer1.Interval = 1000
End Sub
Private Sub Form_Resize()
Picture1.Move 0, 0, Form1.Width, Form1.Height'控制元件適應窗后變化
End Sub
Private Sub Timer1_Timer()
Dim wScreen As Long
Dim hScreen As Long
Dim w As Long
Dim h As Long
Dim x, y, As Long
Picture1.Refresh
x = Form1.Left / 15
y = Form1.Top / 15
Picture1.ScaleMode = 3
w = Picture1.Width
h = Picture1.Height
hdcScreen = GetDC(0)
StretchBlt Picture1.hdc, 0, 0, w, h, hdcScreen, 8 + x, 30 + y, w, h, vbSrcCopy
StretchBlt Picture1.hdc, 0, 0, w, h, Picture1.hdc, 0, 0, w, h, vbDstInvert
End Sub
宣告部分就不貼了,表單里面只有一個picturebox和一個timer
uj5u.com熱心網友回復:
為什么要頻繁地重繪呢?目測你可以畫在記憶體位圖中,然后系結給PictureBox的Picture屬性。讓它自動拉伸和重繪。uj5u.com熱心網友回復:
我想過 但是因為接觸VB不長時間 不知道怎么放在記憶體里..我本來的想法是把截到的圖放在記憶體里 然后反色處理之后在貼到picturebox里..但是不知道怎么實作.
uj5u.com熱心網友回復:
StretchBlt Picture1.hDC, 0, 0, w, h, Picture1.hDC, 0, 0, w, h, vbDstInvert
不停的做反色操作,目的不就是為了閃。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/116764.html
標籤:VB基礎類
上一篇:VB程式中如何通過鍵盤來修改文本框中滑鼠選定的系統時間
下一篇:求加權平均的演算法代碼
