Seite 2 von 2

Verfasst: 07.03.2008 12:05
von Fluid Byte
Tombi hat geschrieben:Wegen dem "dicken des Rahmens" - wäre da jetzt die normale Linien-Funktion besser oder doch lieber die Box Funktion (nur Rahmen)?
Box() ist schneller.

Verfasst: 07.03.2008 12:58
von #NULL
c4s hat geschrieben: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?

Code: Alles auswählen

    DrawingMode(#PB_2DDrawing_Outlined)
    For i=0 To fat-1
      Box( x+i, y+i, w-i*2, h-i*2, $00ff00)
    Next
'fat' ist die dicke. der rahmen geht dabei 'nach innen'. kannst ja die farbe auch noch mit 'i' verknüpfen um farbverlauf zu erhalten.

Verfasst: 07.03.2008 14:23
von Tombi
Der Rahmen geht nach innen? Ist es auch möglich den nach außen hinzurichten?

Edit: Sry, ist ja nicht möglich. Da oben links die Position angegeben wird und wenn der Rahmen nach außen geht wird das ja nichts...

Verfasst: 07.03.2008 14:33
von #NULL

Code: Alles auswählen

      Box( x+i, y+i, w-i*2, h-i*2, $00ff00) ; nach innen
      Box( x-i, y-i, w+i*2, h+i*2, $00ff00) ; nach außen
du kannst den rahmen auch 'drumherum' zeichnen, also zur hälfte nach innen und zur hälfte nach außen.

Verfasst: 07.03.2008 19:59
von Andreas

Code: Alles auswählen

If OpenWindow(0, #PB_Ignore,#PB_Ignore,640,480, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
  If CreateGadgetList(WindowID(0))
    ButtonGadget(0, 10,10,80,24,"BOX")
  EndIf
  Repeat
    EventID = WaitWindowEvent()
    Select EventID
    Case #PB_Event_Gadget
      Select EventGadget()
      Case 0
        DC = StartDrawing(WindowOutput(0))
        Pen = CreatePen_(#PS_SOLID,4,$FF0000)
        OldPen = SelectObject_(Dc,Pen)
        DrawingMode(#PB_2DDrawing_Outlined)
        Box(100, 100, 40, 40, #Null)
        SelectObject_(Dc,OldPen)
        DeleteObject_(Pen)
        StopDrawing()
      EndSelect
    Case #PB_Event_CloseWindow
      Quit = 1
    EndSelect
  Until Quit = 1
EndIf
End

Verfasst: 12.03.2008 18:29
von PureMax
sacht ma wie is das mit komma zahlen??
also zumbeispiel 0,1 also ich wollte ei n kreis der sich um 0,1 vergrößert also

Code: Alles auswählen

InitSprite()
InitKeyboard()

Radius = 400
Radius1 = 1
ScreenX = 1280
ScreenY = 1024

OpenScreen(ScreenX,ScreenY,16,"XXX")
Repeat
ClearScreen(255+256*255+256*256*255) ;weiss
StartDrawing(ScreenOutput())
FrontColor(0+256*0+256*256*0) ;schwarz
Circle(ScreenX/2,ScreenY/2,Radius) ;groß
FrontColor(255+256*255+256*256*255) ;weiss
Circle(ScreenX/2,ScreenY/2,Radius1) ;klein
Radius + 1
Radius1 + 1      ; der soll aber nun nur um 0,1 größer werden!!!
If Radius > ScreenX
Radius = ScreenX
EndIf
StopDrawing()
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(1)
Mfg MAX

Verfasst: 12.03.2008 18:40
von Kaeru Gaman
ganzzahlen kannst du nicht um bruchzahlen erhöhen!

der standard-datentyp ist LONG, das ist ein 32bit Integer.
du musst schon Float oder Double nehmen, wenn du mit kommazahlen arbeiten willst.
PB -> Help -> Allgemeine Themen -> Variablen, Typen und Operatoren


oder, in diesem Fall, nimm Fixkomma:

Code: Alles auswählen

;...
Radius1 = 10
;...
Circle(ScreenX/2,ScreenY/2, Radius1/10 ) ;ein zehntel verwenden
;...
Radius1 + 1      ; so wird er effektiv nur um 0,1 größer!