Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: GetDC штоль?! Добавлено: 20.11.06 11:21  

Автор вопроса:  VβÐUηìt | Web-сайт: смекаешь.рф
Я решил написать одну прогу, для нее нужно считывать пиксели с экрана. Попробовал просто центральный пиксел узнать, но она че-то не работает:

Dim hWndSrc As Long
Dim hSrcDc As Long
Dim l As Long
hWndSrc = GetDesktopWindow()
hSrcDc = GetDC(hWndSrc)
Dim X As Integer
Dim y As Integer
X = Screen.Width / Screen.TwipsPerPixelX / 2
y = Screen.Height / Screen.TwipsPerPixelY / 2
l = GetPixel(hSrcDc, X, y)

По идее l должно быть равно цвету, а оно почему-то равно -1. Вродебы глючит GetDC, но я без понятий, как это исправить. Помогите, плз!

Заранее спасибо.

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #1
Добавлено: 20.11.06 13:14
Используй вместо GetDC GetWindowDC:
    Dim hWndSrc As Long
    Dim hSrcDc As Long
    Dim l As Long
    hWndSrc = GetDesktopWindow()
    hSrcDc = GetWindowDC(hWndSrc)
    Dim x As Integer
    Dim y As Integer
    x = Screen.Width / Screen.TwipsPerPixelX / 2
    y = Screen.Height / Screen.TwipsPerPixelY / 2
    
    l = GetPixel(hSrcDc, x, y)
    Print l, x, y
Так все работает

Ответить

Номер ответа: 2
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #2
Добавлено: 21.11.06 11:40
Спасиб., но есть одно НО: После пяти минут работы у моей проги исчезайэт заголовок, изредко появляется кнопка закрытия, а рабочая область формы обращается в какой-то тупой овал!

Шо за сей побочный эффект?!

Ответить

Номер ответа: 3
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #3
Добавлено: 21.11.06 14:35
После пяти минут работы у моей проги исчезайэт заголовок, изредко появляется кнопка закрытия, а рабочая область формы обращается в какой-то тупой овал!
Не знаю, смотря что ты желаешь. Приведи свой код, потому что у меня на нажатие кнопки все великолепно работает

P.S Вообще, когда работаешь с дескриптором рабочего стола, жди чудес, т. к. он возвращает как бы скриншот всего монитора... и здесь не только заголовок окна пропасть может.
Гляди:
Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long
Sub CP(hdc As Long, X1 As Integer, X2 As Integer, Y1 As Integer, Y2 As Integer, COLOR As Long)
Dim x As Integer
Dim y As Integer
For x = X1 To X2
For y = Y1 To Y2
SetPixel hdc, x, y, COLOR
Next y
Next x
End Sub
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub

Private Sub Command2_Click()
Unload Me
End Sub

Private Sub Timer1_Timer()
CP GetWindowDC(GetDesktopWindow), 0, 1024, 0, 256, RGB(255, 255, 255)
CP GetWindowDC(GetDesktopWindow), 0, 1024, 256, 512, RGB(0, 0, 255)
CP GetWindowDC(GetDesktopWindow), 0, 1024, 512, 768, RGB(255, 0, 0)
End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам