В силу "обратного" представления цвета в VB ,пришлось обменять (SWAP),"байты",Red и Blue. Получилось очень криво!
Хотелось бы узнать,есть ли стандартные функции для этого действия.Полагаю,что,если использовать стандартные функции,то такого обмена не потребуеться.
- Код: Выделить всё
Public Class Form1
Private Structure POINTAPI
Public x As Int32
Public y As Int32
End Structure
Private Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Int32
Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Int32) As Int32
Private Declare Function GetPixel Lib "gdi32.dll" (ByVal hdc As Int32, ByVal x As Int32, ByVal y As Int32) As Int32
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim c As Int32
Dim nc As String
Dim nc1 As String
Dim cur As POINTAPI
GetCursorPos(cur)
c = GetPixel(GetDC(0), cur.x, cur.y)
c = c Or &HFF000000
nc = Hex(c)
nc1 = Mid(nc, 7, 2)
Mid(nc, 7, 2) = Mid(nc, 3, 2)
Mid(nc, 3, 2) = Mid(nc1, 1, 2)
PictureBox1.BackColor = Color.FromArgb(Val("&h" & nc))
End Sub
End Class
Заранее спасибо.