Цикл Get Pixel пропускает пиксели, которые он должен был найти. (на маленьком базовом)

Вот код в Small Basic:

GraphicsWindow.CanResize = 0
GraphicsWindow.Width = 201
GraphicsWindow.Height = 300
X = 0
circumstance = 0

'Initialization
GraphicsWindow.SetPixel(100,0,"Black")
code = "01111111"


'Start
For i=1 To GraphicsWindow.Height
For X=0 To GraphicsWindow.Width
Program.Delay(1)

If X>0 Then
  If GraphicsWindow.GetPixel(X-1,i-1) = "Black" Then
    circumstance = circumstance + 1
  EndIf
EndIf  

If GraphicsWindow.GetPixel(X,i-1) = "Black" Then
  circumstance = circumstance + 10
EndIf

If X<GraphicsWindow.Width Then
  If GraphicsWindow.GetPixel(X+1,i-1) = "Black" Then
    circumstance = circumstance + 100
  EndIf
EndIf  

TextWindow.WriteLine(circumstance)
  EndFor
EndFor

Что он делает, так это просматривает графическое окно пиксель за пикселем. Переменная "обстоятельство" - это то, что он нашел. Если в верхнем левом углу целевого пикселя есть черный пиксель, первая цифра будет равна 1. Если в верхней части целевого пикселя есть черный пиксель, вторая цифра будет равна 1. Если есть черный пиксель в вверху справа от целевого пикселя, третья цифра будет 1. Но независимо от того, что я пытаюсь, обстоятельства всегда выводят 000.


person Tower07    schedule 31.05.2012    source источник


Ответы (2)


GetPixel всегда работал для меня. Какую версию SB вы используете? Кстати, графическое окно должно быть окрашено в какой-то цвет, хотя по умолчанию оно белое, оно не вернет белый цвет, потому что цвета как бы нет.

person ViteXikora    schedule 30.05.2013

  1. GetPixel возвращает «#rrggbb», а не название цвета.
  2. GraphicsWindow в начале заполняется "#000000". Но цвет прозрачный, поэтому вы можете видеть цвет фона.
person Nonki Takahashi    schedule 29.01.2015