Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Как получить цвет пикселя на экране? Добавлено: 16.12.09 22:39  

Автор вопроса:  Oleg
Как получить цвет пикселя на экране в заданных координатах? VB6.0. GetPixel - надо его юзать, но как не понятно(( Напишите плиз, от и до...
Кстатии как определить разрешение экрана, чтоб не посылать координаты " в молоко"?
З.Ы.Гугл ответа, что с копировать и вставить не дал(((, а тут - тупо не нашел кнопку "поиск" на форме, так что извените если все уже спрашивалось раньше.

Ответить

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

Номер ответа: 1
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #1
Добавлено: 16.12.09 23:20
как определить разрешение экрана

  1. x = screen.Width
  2. y = screen.height


Экран
  1. Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
  2. screenDC = GetDC(0)
  3. ' Дальше Юзай Getpixel
  4. Color = GetPixel(screenDC, X, Y)



Если будешь искать циклом, то screenDC = GetDC(0) вынеси за цикл, в начале.

Ответить

Номер ответа: 2
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #2
Добавлено: 16.12.09 23:24
Если нужно много перебора делать, то лучше сделай так.

Код Модуля:
  1. Public Type BITMAPINFOHEADER
  2.    bmSize As Long
  3.    bmWidth As Long
  4.    bmHeight As Long
  5.    bmPlanes As Integer
  6.    bmBitCount As Integer
  7.    bmCompression As Long
  8.    bmSizeImage As Long
  9.    bmXPelsPerMeter As Long
  10.    bmYPelsPerMeter As Long
  11.    bmClrUsed As Long
  12.    bmClrImportant As Long
  13. End Type
  14. Public Type RGBTRIPLE
  15.    Blue As Byte
  16.    Green As Byte
  17.    Red As Byte
  18. End Type
  19. Public Type BITMAPINFO
  20.    bmHeader As BITMAPINFOHEADER
  21.    bmColors(0 To 255) As RGBTRIPLE
  22. End Type
  23.  
  24. Public Declare Function SetDIBits Lib "Gdi32.dll" (ByVal hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, ByRef lpBits As Any, ByRef lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
  25. Public Declare Function GetDIBits Lib "Gdi32.dll" (ByVal hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
  26. Public 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)
  27.  
  28. Public ScreenW As Long
  29. Public ScreenH As Long
  30. Public BitmapInformation As BITMAPINFO
  31. Public temp() As RGBTRIPLE


Код формы.
Создай картинку на форме. Picture1

ScreenW = screen.width
ScreenH = screen.Height
   With BitmapInformation.bmHeader
      .bmSize = Len(BitmapInformation.bmHeader)
      .bmBitCount = 24
      .bmClrImportant = 0
      .bmClrUsed = 0
      .bmCompression = BI_RGB
      .bmHeight = ScreenH
      .bmWidth = ScreenW
      .bmPlanes = 1
      .bmSizeImage = 0
      .bmXPelsPerMeter = 0
      .bmYPelsPerMeter = 0
   End With
BitBlt Form1.Picture1.hdc, 0, 0, ScreenW, ScreenH, GetDC(0), 0, 0, vbSrcCopy
GetDIBits Form1.Picture1.hdc, Form1.Picture1.Image, 0, ScreenH, temp(0, 0), BitmapInformation, DIB_RGB_COLORS

Все точки, в формате RGB будут у тебя в массиве temp(screenW-1,screenH-1)

Ответить

Номер ответа: 3
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #3
Добавлено: 16.12.09 23:29
Забыл, массив сначала определить надо
  1. ReDim temp(screenW-1,screenH-1)

Ответить

Номер ответа: 4
Автор ответа:
 Oleg



Вопросов: 1
Ответов: 1
 Профиль | | #4 Добавлено: 19.12.09 11:15
Cпасибо

Ответить

Страница: 1 |

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



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