Seite 1 von 2
Nicht gefüllte Box
Verfasst: 06.03.2008 21:59
von PureMax
und wieder einmal eine vllt dumme frage aber wie kann man ne ungefüllte box erstellen?!
mfgMAX
Verfasst: 06.03.2008 22:01
von Vermilion
Du benutzt einfach einen anderen Zeichenmodus, nämlich den, wo nur die Außenlinien gezeichnet werden.
Code: Alles auswählen
StartDrawing(Output)
DrawingMode(#PB_2DDrawing_Outlined)
Box(10, 10, 20, 20, $FFFFFF)
StopDrawing()
Mehr dazu in der Hilfe.

Verfasst: 06.03.2008 22:08
von PureMax
danke
mfg MAX
Verfasst: 07.03.2008 01:20
von c4s
Ich hab dann noch eine zusätzliche Frage dazu:
Gibt es eine (einfache) Möglichkeit die Dicke der Linien bei eben der Box
oder einer Linie selbst einzustellen?
...Würde mir sehr helfen dass endlich mal rauszubekommen!
Verfasst: 07.03.2008 01:42
von Kaeru Gaman
> Gibt es eine (einfache) Möglichkeit
nope
> Gibt es eine Möglichkeit
yup
über WinAPI... hab ich schon mal gesehen...
Wolf hatte in der Lounge mal Code dazu gepostet...
Verfasst: 07.03.2008 01:46
von Xaby
Glaub mir, das habe ich auch schon sehr oft vermisst.
Du kannst bei dicken Rahmen einen gefüllten Außenkreis zeichnen und einen gefüllten Innenkreis. Bei Boxen genauso.
Linien musste wohl als Rahmen zeichnen und dann Füllen oder die Linien in einer Schleife zeichnen. Dafür kannst dir aber eigene Prozeduren schaffen.
Gab da mal ein paar Grafik-Bibliotheken.
http://www.purearea.net/pb/german/index.htm
User-Libs und da E2D, X2D ... da war so etwas drin, soweit ich mich erinnern kann.
Gibt aber noch andere. Einfach mal durchschauen.

Verfasst: 07.03.2008 08:15
von PureMax
also mir gings darum um gefüllte boxen mit andersfarbigen ramen
(menü buttons)
mfg MAX
Verfasst: 07.03.2008 09:04
von Kaeru Gaman
dafür braucht man doch keine extra-funktionen...
du zeichnest erst ne gefüllte box, und dann ne nicht gefüllte in ner anderen farbe drüber.
sowas zum bleistift:
Code: Alles auswählen
EnableExplicit
InitSprite()
InitMouse()
InitKeyboard()
OpenScreen(800,600,32,"Buttons")
Global MPX.l, MPY.l, MLC.l
Procedure DrawButton( BX.l, BY.l, BW.l, BH.l, TOX.l, TOY.l, TXT.s )
Static ColFrame1.l ; oberer Frame
Static ColFrame2.l ; unterer Frame
Static ColButton.l ; Hintergrund
If MPX > BX And MPX < BX+BW And MPY > BY And MPY < BY+BH
If MLC
; Farben für Button gedrückt
ColFrame1 = $404000
ColFrame2 = $808000
ColButton = $606000
Else
; Farben für Mouseover Button
ColFrame1 = $FFFF00
ColFrame2 = $808000
ColButton = $C0C000
EndIf
Else
; Farben für Button normal
ColFrame1 = $C0C000
ColFrame2 = $606000
ColButton = $909000
EndIf
DrawingMode(#PB_2DDrawing_Transparent) ; gefüllte Box, transparenter Texthintergrund
Box( BX, BY, BW, BH, ColButton )
DrawText( BX+TOX, BY+TOY, TXT, ColFrame1 )
DrawingMode(#PB_2DDrawing_Outlined) ; Box-Rahmen
Box( BX, BY, BW+1, BH+1, ColFrame2 )
Box( BX-1, BY-1, BW+1, BH+1, ColFrame1 )
EndProcedure
Procedure DrawMouse( MX.l, MY.l )
Protected n.l
FrontColor( $80FFFF )
For n=0 To 3
Line( mx+n, my+n, 32, 16 )
Line( mx+n, my+n, 16, 32 )
Next
EndProcedure
Repeat
ExamineMouse()
ExamineKeyboard()
MPX = MouseX()
MPY = MouseY()
MLC = MouseButton(#PB_MouseButton_Left)
ClearScreen( $402010 )
StartDrawing(ScreenOutput())
DrawButton( 300, 100, 200, 40, 74, 12, "Button 1" )
DrawButton( 300, 200, 200, 40, 74, 12, "Button 2" )
DrawButton( 300, 300, 200, 40, 74, 12, "Button 3" )
DrawButton( 300, 400, 200, 40, 74, 12, "Button 4" )
DrawMouse( MPX, MPY )
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Verfasst: 07.03.2008 09:31
von Tombi
Wegen dem "dicken des Rahmens" - wäre da jetzt die normale Linien-Funktion besser oder doch lieber die Box Funktion (nur Rahmen)?
Wichtig ist mir:
* Speicherverbrauch
* Ladezeit
Verfasst: 07.03.2008 11:23
von Kaeru Gaman
was meinst du mit Ladezeit.... geladen wird da nix.
gehts dir um performance?
dann nimm von vorne herein sprites.
außerdem kann man die viel schicker gestalten, als mit Draw zurechtgestoppeltes....
und selbst wenn...
man kann zu beginn des programms auch mit Draw-Funktionen sprites erzeugen.
da kann man dann etwas aufwendigere sachen machen, hat aber nachher in
der hauptschleife fertige sprites und muss nicht dauernd wieder drawen.