Seite 1 von 1

Origin für zeichenoperationen ändern

Verfasst: 12.03.2011 14:50
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.

Re: Origin für zeichenoperationen ändern

Verfasst: 12.03.2011 14:59
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



Re: Origin für zeichenoperationen ändern

Verfasst: 12.03.2011 15:30
von E-P-S
Das ist eine interessante Möglichkeit. Vielen Dank für diese Lösung.

Re: Origin für zeichenoperationen ändern

Verfasst: 12.03.2011 15:38
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).

Re: Origin für zeichenoperationen ändern

Verfasst: 12.03.2011 17:59
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

Re: Origin für zeichenoperationen ändern

Verfasst: 12.03.2011 18:25
von TomS
Nicht schlecht, Nino :allright: