Nicht gefüllte Box

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag 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.
my pb stuff..
Bild..jedenfalls war das mal so.
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Beitrag 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...
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag 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.
my pb stuff..
Bild..jedenfalls war das mal so.
Andreas
ToolbarKönig
Beiträge: 142
Registriert: 08.09.2004 08:33

Beitrag 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
Gruss Andreas
PureMax
Beiträge: 16
Registriert: 21.02.2008 19:32
Kontaktdaten:

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten