Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: анализ графика функции Добавлено: 18.12.06 13:03  

Автор вопроса:  Dmitry
Помогите, плз, такая проблема: в PictureBox вставлен ч/б график функции. Как попиксельно определить координаты точек графика и загнать их в массив. Использовал GetPixel, но не могу понять в каком виде он возвращает данные:-(
Вот, что сделал:

Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long
Dim i As Long, j As Long
Dim Matrix(0 To 800, 0 To 600) As Long  
Dim w As Long
Dim h As Long
___________________

Private Sub Command1_Click()
w = picSource.Width \ Screen.TwipsPerPixelX    
h = picSource.Height \ Screen.TwipsPerPixelY    
For j = 0 To h
    For i = 0 To w
        Matrix(i, j) = GetPixel(picSource.hDC, i, j)
    Next i
Next j

End Sub

Ответить

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

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



ICQ: 219571279 

Вопросов: 34
Ответов: 486
 Профиль | | #1 Добавлено: 18.12.06 14:59
Нафига те GetPixel, если в Picturebox есть Point!
Перебираешь координаты x, y, сравниваешь цвета, если черный тогда запоминаешь координаты, а это:
Matrix(i, j) = GetPixel(picSource.hDC, i, j)

ты запоминаешь цвет As long

Ответить

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



Вопросов: 4
Ответов: 2
 Профиль | | #2 Добавлено: 18.12.06 17:43
Спасибо, понял. Че-то я сразу не догадался

Ответить

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



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #3
Добавлено: 18.12.06 21:23
Нафига те GetPixel, если в Picturebox есть Point!
avdey, GetPixel быстрее

Использовал GetPixel, но не могу понять в каком виде он возвращает данные
эти даные потом по POINTAPI раскладываются

Ответить

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



ICQ: 219571279 

Вопросов: 34
Ответов: 486
 Профиль | | #4 Добавлено: 19.12.06 11:06
Угу! Отличия будут заметны если картинка большого разрешения, а у него по размеру пикчербокса... код смотри!

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 19.12.06 21:23
Если границы массива жестко заданы, смысл в

w = picSource.Width \ Screen.TwipsPerPixelX
h = picSource.Height \ Screen.TwipsPerPixelY

?

просто бы уже..
For j = 0 To 800
    For i = 0 To 600
...

И вообще если график строится программно, лучше бы запоминать координаты на этапе построения графика, а не переберать точки когда график построен

Ответить

Страница: 1 |

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



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