Seite 1 von 1

Point fehler ?

Verfasst: 29.12.2009 00:51
von pureanfänger
Ich möchte via Point-Funktion die Farbe des unter dem Cursor befindenden Pixels eines Sprites auslesen. (Funktioniert auch soweit)

Sobald ich allerdings an den rechten oder unteren Spriterand komme, stürzt der Compiler immer mit der Fehlermeldung: "Point() is outside of drawing area" ab.

Beispiel:
Spritegröße 50x50 Hier würde der Compiler bei den Koordinaten --x50 oder 50x-- abstürzen.
Was also bedeutet, dass ich die Point-Funktion nur bis zum vorletzten Pixel der X bzw. Y-Achse des Sprites verwenden kann.

Mein Code: Feld_01_X.l und Feld_01_Y.l geben die Spritepositionen an, Feld_01.l ist das Handle des Sprites.

Code: Alles auswählen

     If (MouseX() - Feld_01_X.l) >=0 And (MouseX() - Feld_01_X.l) <= SpriteWidth(Feld_01.l) And (MouseY() - Feld_01_Y.l) >=0 And (MouseY() - Feld_01_Y.l) <= SpriteHeight(Feld_01.l)
       StartDrawing(SpriteOutput(Feld_01.l))  
         Color_01.l = Point(MouseX() - Feld_01_X.l, MouseY() - Feld_01_Y.l)  
       StopDrawing()  
     Else
       Color_01.l - 1
     EndIf 
Liegt jetzt der Fehler bei mir, oder ist die Point-Funktion seid der Version 4.40 fehlerhaft?
Vor vers. 4.40 hat alles einwandfrei funktioniert.

Re: Point fehler ?

Verfasst: 29.12.2009 00:55
von ts-soft
Vielleicht geht die Achse von 0 - 49 bei 50 Pixeln?

Re: Point fehler ?

Verfasst: 29.12.2009 01:19
von STARGÅTE
er meinst du sollst aus den <= nur < machen !

Code: Alles auswählen

If (MouseX() - Feld_01_X.l) >=0 And (MouseX() - Feld_01_X.l) < SpriteWidth(Feld_01.l) And (MouseY() - Feld_01_Y.l) >=0 And (MouseY() - Feld_01_Y.l) < SpriteHeight(Feld_01.l)
       StartDrawing(SpriteOutput(Feld_01.l))  
         Color_01.l = Point(MouseX() - Feld_01_X.l, MouseY() - Feld_01_Y.l)  
       StopDrawing()  
     Else
       Color_01.l - 1
     EndIf 

Re: Point fehler ?

Verfasst: 29.12.2009 12:16
von Kaeru Gaman
pureanfänger hat geschrieben:Spritegröße 50x50 Hier würde der Compiler bei den Koordinaten --x50 oder 50x-- abstürzen.
Was also bedeutet, dass ich die Point-Funktion nur bis zum vorletzten Pixel der X bzw. Y-Achse des Sprites verwenden kann.
Denkfehler:
0-49 sind 50 Werte, die 50 ist außerhalb.

mal grundsätzlich merken, trifft nämlich auf JEDE Matrix zu.

Re: Point fehler ?

Verfasst: 30.12.2009 13:47
von pureanfänger
Ich bin aber auch ein trottel ... ist ja logisch mit der 0-49 = 50 pixel.

Danke für eure Antworten, und noch einen guten Rutsch ins neue Jahr ;-)

Re: Point fehler ?

Verfasst: 30.12.2009 14:01
von TomS
pureanfänger hat geschrieben:ist ja logisch mit der 0-49 = 50 pixel.
Nicht wirklich.
Bei jedem Grafikprogramm, das ich kenne, ist der Pixel Links-Oben 1/1 und nicht 0/0. Das gleicht gilt für Desktop, 2D-Screen und jede HTML-Render-Engine^^

//Edit: Blödsinn^^ Einfach ignorieren -.-

Re: Point fehler ?

Verfasst: 30.12.2009 14:06
von ts-soft
TomS hat geschrieben:
pureanfänger hat geschrieben:ist ja logisch mit der 0-49 = 50 pixel.
Nicht wirklich.
Bei jedem Grafikprogramm, das ich kenne, ist der Pixel Links-Oben 1/1 und nicht 0/0. Das gleicht gilt für Desktop, 2D-Screen und jede HTML-Render-Engine^^
Beim programmieren beginnt jeder index bei 0, dies ist jedenfalls der standard seit das programmieren erfunden wurde :wink:

Re: Point fehler ?

Verfasst: 30.12.2009 14:24
von Kaeru Gaman
TomS hat geschrieben:
pureanfänger hat geschrieben:ist ja logisch mit der 0-49 = 50 pixel.
Nicht wirklich.
Bei jedem Grafikprogramm, das ich kenne, ist der Pixel Links-Oben 1/1 und nicht 0/0. Das gleicht gilt für Desktop, 2D-Screen und jede HTML-Render-Engine^^
bei Paint ist links oben die 0/0, bei PhotoFiltre auch.
beim Desktop erstrecht und beim 2D Screen ebenfalls.

... also, ich weiß nicht welche Anwendungen du meinst, aber das ist eher die absolute Ausnahme.

Re: Point fehler ?

Verfasst: 30.12.2009 14:32
von TomS
:oops:
Ich plapper wieder wirres Zeug.
Sind ja immer Offsets zum Rand^^