所谓屏幕扭曲只是使得屏幕的某一个点的X、Y位移而已,这就是原理~
原帖请见;
谁能破解这个用VB编的程序!!?-科创论坛效果如图:
VBP就不上了,直接上Form
帅气的屏幕扭曲-整人.rar
1.27KB
RAR
15次下载
咳咳,不多说上代码~首先建立一个Timer1,Interval=1-10(任写一个值)
然后复制代码:
'the program basically uses a temporary buffer to randomly copy a portion of'screen(32x32'in this case) an then paste it back shifting it slightly from'the original position in the processOption ExplicitPrivate Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As LongPrivate Declare Function GetDesktopWindow Lib "user32" () As LongPrivate Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As LongPrivate Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As LongPrivate Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As LongPrivate Declare Function BitBlt Lib "gdi32" (ByVal hDestDC 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 dwRop As Long) As LongPrivate Const SRCCOPY = &HCC0020 ' (DWORD) dest = source
Dim x As Integer, y As IntegerDim Buffer As Long, hBitmap As Long, Desktop As Long, hScreen As Long, ScreenBuffer As Long
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = vbKeyEscape ThenUnload MeEnd IfEnd Sub
Private Sub Form_Load()'To get the device context for the desktop(whole screen)Desktop = GetWindowDC(GetDesktopWindow())
'to create a device context compatible with a known device context'and assign it to a long variablehBitmap = CreateCompatibleDC(Desktop)hScreen = CreateCompatibleDC(Desktop)
'to create bitmaps in memory for temporary storage compatible with a known bitmapBuffer = CreateCompatibleBitmap(Desktop, 32, 32)ScreenBuffer = CreateCompatibleBitmap(Desktop, Screen.Width / 15, Screen.Height / 15)
'assign device contexts to the bitmapsSelectObject hBitmap, BufferSelectObject hScreen, ScreenBuffer
'save the screen for later restorationBitBlt hScreen, 0, 0, Screen.Width / 15, Screen.Height / 15, Desktop, 0, 0, SRCCOPYEnd Sub
Private Sub Form_Unload(Cancel As Integer)'restores the desktop to the saved picture when program ends'try to comment out following line and seeBitBlt Desktop, 0, 0, Screen.Width / 15, Screen.Height / 15, hScreen, 0, 0, SRCCOPY
End Sub
Private Sub tmr1_Timer()y = (Screen.Height / 15) * Rndx = (Screen.Width / 15) * Rnd
'copy 32x32 portion of screen into buffer at x,yBitBlt hBitmap, 0, 0, 32, 32, Desktop, x, y, SRCCOPY
'paste back slightly shifting the values for x and yBitBlt Desktop, x + (3 - 6 * Rnd), y + (2 - 4 * Rnd), 32, 32, hBitmap, 0, 0, SRCCOPY
End Sub
Private Sub Timer1_Timer()y = (Screen.Height / 15) * Rndx = (Screen.Width / 15) * Rnd
'copy 32x32 portion of screen into buffer at x,yBitBlt hBitmap, 0, 0, 32, 32, Desktop, x, y, SRCCOPY
'paste back slightly shifting the values for x and yBitBlt Desktop, x + (3 - 6 * Rnd), y + (2 - 4 * Rnd), 32, 32, hBitmap, 0, 0, SRCCOPYEnd Sub
200字以内,仅用于支线交流,主线讨论请采用回复功能。