Страница: 1 | 2 |
|
Вопрос: определение цвета экрана в указанной точке
|
Добавлено: 06.07.11 20:49
|
|
Автор вопроса: Алексей | ICQ: нету
|
Доброго времени суток!
Мне необходимо определить цвет экрана монитора в точке (12, 89), получить его в RGB и вывести в текст бокс 1 на VB.Net 2008. Как это сделать???
Ответить
|
Номер ответа: 5 Автор ответа: Алексей
ICQ: нету
Вопросов: 6 Ответов: 42
|
Профиль | | #5
|
Добавлено: 07.07.11 14:38
|
я извиняюсь, но.. подстроил под свою программу, получил следущий кусок кода:
-
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Timer1.Start()
- End Sub
- Private Function getpixelcolorfromscreen(ByVal p As Point) As Color
- Dim bmp As Bitmap = New Bitmap(1, 1, Drawing.Imaging.PixelFormat.Format32bppRgb)
- Dim g As Graphics = Graphics.FromImage(bmp)
- g.CopyFromScreen(p, New Point(0, 0), bmp.Size)
- Return bmp.GetPixel(0, 0)
- End Function
- Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
- p1:
- Dim x As Integer
- Dim y As Integer
- y = Cursor.Position.Y()
- For x = 300 To 800 Step 1
- Dim sp As Point = New Point(x, y)
- Dim clr As Color = Me.getpixelcolorfromscreen(sp)
- TextBox1.Text = clr.ToString
- Next
- GoTo p1
- End Sub
Он не работет, высвечивается ошибка на g.CopyFromScreen(p, New Point(0, 0), bmp.Size) с подпиской"недопустимый параметр"
Ответить
|
Номер ответа: 11 Автор ответа: Ким Чен Ир
Вопросов: 0 Ответов: 140
|
Профиль | | #11
|
Добавлено: 09.07.11 12:27
|
В данном коде имеют значения два чудовищных цикла в процедуре таймера.
И совершенно непонятно, что значит непрерывное определение цвета пикселя по координатам х-(от 300 до 800)
Вывести все стопицот значений зараз?
Ответить
|
Номер ответа: 13 Автор ответа: Ким Чен Ир
Вопросов: 0 Ответов: 140
|
Профиль | | #13
|
Добавлено: 09.07.11 14:05
|
То есть за миллисекунду в текстбоксе должно последовательно промелькнуть 500 значений по X, при движении мыши по Y?
Ответить
|
Номер ответа: 15 Автор ответа: Ким Чен Ир
Вопросов: 0 Ответов: 140
|
Профиль | | #15
|
Добавлено: 10.07.11 15:23
|
Что посоветовать.. не устраивать кучу циклов в таймере.
Попробуй еще раз популярно объяснить народу, что ты хочешь видеть.)
Вот вариант реагирующий на движение мыши.
- Public Class Form1
- Structure MSLLHOOKSTRUCT
- Dim pt As Point
- Dim mouseData As Integer
- Dim flags As Integer
- Dim time As Integer
- Dim dwExtraInfo As IntPtr
- End Structure
-
- Private Delegate Function HookProc(ByVal code As Integer, ByVal wParam As IntPtr, ByRef lParam As MSLLHOOKSTRUCT) As Integer
- Private Declare Function SetWindowsHookExA Lib "user32" (ByVal hookType As Integer, ByVal lpfn As HookProc, ByVal hMod As IntPtr, ByVal dwThreadId As UInteger) As IntPtr
- Private Declare Function CallNextHookEx Lib "user32" (ByVal hhk As IntPtr, ByVal nCode As Integer, ByVal wParam As IntPtr, ByRef lParam As MSLLHOOKSTRUCT) As Integer
- Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hhk As IntPtr) As Integer
- Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As IntPtr, ByVal nXPos As Integer, ByVal nYPos As Integer) As Integer
- Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As IntPtr) As IntPtr
- Private Declare Function ReleaseDC Lib "user32" (ByVal hWnd As IntPtr, ByVal hdc As IntPtr) As Integer
- Private hookmouseLL As IntPtr
-
- Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
- UnhookWindowsHookEx(hookmouseLL)
- End Sub
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- hookmouseLL = SetWindowsHookExA(14, AddressOf MouseLL, 0, 0)
- End Sub
-
- Private Function MouseLL(ByVal code As Integer, ByVal wParam As IntPtr, ByRef lParam As MSLLHOOKSTRUCT) As Integer
- Dim deskDC = GetWindowDC(0)
- Dim mycolor As Color = ColorTranslator.FromOle(GetPixel(GetWindowDC(0), lParam.pt.X, lParam.pt.Y))
- TextBox1.BackColor = mycolor
- TextBox1.Text = ColorTranslator.ToHtml(mycolor)
- ReleaseDC(0, deskDC)
- Return (CallNextHookEx(hookmouseLL, code, wParam, lParam))
- End Function
- End Class
Ответить
|
Страница: 1 | 2 |
Поиск по форуму