Origin für zeichenoperationen ändern

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
E-P-S
Beiträge: 134
Registriert: 30.03.2007 09:39
Kontaktdaten:

Origin für zeichenoperationen ändern

Beitrag von E-P-S »

Guten Tag,

Normalerweise ist der Ursprung (Origin) für Zeichenoperationen in einem Image ja oben links und nimmt nach unten bzw. rechts zu.

Ist es möglich für die 2D Zeichenoperationen (LineXY, Ellipse etc.) die Ausrichtung und den Ursprung (Origin) in einem Image zu verändern? Für die Darstellung eines Diagramms wäre es z.B. hilfreich den Ursprung nach unten links und die Richtung von unten nach oben zu ändern.

Vielen Dank.
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Origin für zeichenoperationen ändern

Beitrag von TomS »

Nicht, dass ich wüsste. Aber du kannst dir ja einfach Macros dafür schreiben.

Code: Alles auswählen

origin_x = 0
origin_y = 600

Macro Box_Origin(x, y, width, height, color)
	Box(origin_x + x, origin_y - y, width, -height, color)
EndMacro

Macro Circle_Origin(x,y,radius,color)
	Circle(origin_x + x, origin_y - y, radius, color)
EndMacro 


CreateImage(0,800,600)
StartDrawing(ImageOutput(0))

Box(0, 0, 100, 100, $FF0000)
Box_Origin(0, 0, 100, 100,  $FF0000)
Box_Origin(200, 0, 80, 200,  $0000FF)

origin_y = 300

Box_Origin(400, 0, 80, 200,  $009900)
Box_Origin(500, 0, 80, -200,  $000099)

origin_x = 400
origin_y = 300

Circle_Origin(0, 0, 100, $00FF00)

StopDrawing()

OpenWindow(0, 0, 0, 800, 600, "", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ImageGadget(0,0,0,800,600,ImageID(0))
Repeat
	event = WaitWindowEvent(20)
	
Until event = #PB_Event_CloseWindow


Benutzeravatar
E-P-S
Beiträge: 134
Registriert: 30.03.2007 09:39
Kontaktdaten:

Re: Origin für zeichenoperationen ändern

Beitrag von E-P-S »

Das ist eine interessante Möglichkeit. Vielen Dank für diese Lösung.
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Origin für zeichenoperationen ändern

Beitrag von TomS »

Mir fällt gerade ein, dass du mit Macros sogar die original Funktionen überschreiben kannst.
Allerdings gibt es keinen Aus-Knopf dafür, so dass man wieder die Original PB-Funktionen verwendet (so wie Enable /Disableexplicit).
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Origin für zeichenoperationen ändern

Beitrag von Nino »

TomS hat geschrieben:Mir fällt gerade ein, dass du mit Macros sogar die original Funktionen überschreiben kannst.
Allerdings gibt es keinen Aus-Knopf dafür, so dass man wieder die Original PB-Funktionen verwendet (so wie Enable /Disableexplicit).
Das lässt sich z.B. mit Parametern steuern.
Könnte ungefähr so aussehen (wenn ich keinen Fehler eingebaut habe):

Code: Alles auswählen

EnableExplicit

Procedure ExtendedBox (x, y, width, height, color, origin_x, origin_y)
   If origin_x = -1 And origin_y = -1
      ; Die originale PB-Funktion verwenden.
      If color = -1
         Box(x, y, width, height)
      Else   
         Box(x, y, width, height, color)
      EndIf
   Else
      ; Modifizierte Fassung verwenden (Ursprung unten links).
      If color = -1
         Box(origin_x + x, origin_y - y, width, -height)
      Else   
         Box(origin_x + x, origin_y - y, width, -height, color)
      EndIf
   EndIf
EndProcedure

Macro Box (x, y, width, height, color=-1, origin_x=-1, origin_y=-1)
   ExtendedBox(x, y, width, height, color, origin_x, origin_y)
EndMacro

;-------------------------------------------------------------------
; Demo:

Define event

CreateImage(0, 800, 600)
StartDrawing(ImageOutput(0))
Box(  0, 0, 100,  100, $FF0000)
Box(  0, 0, 100,  100, $FF0000, 0, 600)
Box(200, 0,  80,  200, $0000FF, 0, 600)
Box(400, 0,  80,  200, $009900, 0, 300)
Box(500, 0,  80, -200, $000099, 0, 300)
StopDrawing()

OpenWindow(0, 0, 0, 800, 600, "", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ImageGadget(0, 0, 0, 800, 600, ImageID(0))

Repeat
   event = WaitWindowEvent(20)
Until event = #PB_Event_CloseWindow
Grüße, Nino
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Origin für zeichenoperationen ändern

Beitrag von TomS »

Nicht schlecht, Nino :allright:
Antworten