Kreisförmig anordnen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Kreisförmig anordnen

Beitrag von roherter »

Ich möchte eine bestimmte anzahl von bilder kreisförmig anordenen mit angabe in welchem radius das passieren soll und angabe der anzahl der bilder wie mache ich das am besten?
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Hi,

suchst du jetzt nur die Rechnung dazu?

Oder wie man es später am Besten dem User präsentiert?

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

  1. Du setzt den Mittelpunkt deines Kreises

  2. For a=1 to Bilder
    BildMittelpunktx=Kreismittelpunktx+cos(2*#PI/Bilder*a)*Radius
    BildMittelpunkty=Kreismittelpunkty+sin(2*#PI/Bilder*a)*Radius
    next
  3. Du errechnest aus dem Mittelpunkt für jedes Bild die Koordinaten der linken oberen Ecke
  4. Du zeigst das ganze an
(3 und 4 gehören dann auch in die For Schleife)

Weitere Fragen beantworte ich dir gerne

edit: Beispielcode

Code: Alles auswählen

;- Code by Macros
;- Order images on a circle

OpenWindow(1,0,0,600,600,"Kreistest",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
CreateGadgetList(WindowID(1))
ImageGadget(1,0,0,600,600,0)
CreateImage(0,600,600)

Bilder=10
For a=1 To Bilder
  width=Random(80)+40
  height=Random(80)+40
  CreateImage(a,width,height)
  StartDrawing(ImageOutput(a))
  Box(0,0,width,height,RGB(Random(255),Random(255),Random(255)))
  Box(2,2,width-4,height-4,RGB(Random(255),Random(255),Random(255)))
  StopDrawing()
Next

Repeat
  kreislauf.f+0.01
  ;-Schritt 1
  mittelpunktx=300
  mittelpunkty=300
  Radius=200
  StartDrawing(ImageOutput(0))
  Box(0,0,600,600,0) ; Hintergrund löschen
  For a=1 To Bilder
    ;-Schritt 2
    ; BildMittelpunktx=mittelpunktx+Cos(2*#PI/Bilder*a)*Radius
    ; BildMittelpunkty=mittelpunkty+Sin(2*#PI/Bilder*a)*Radius
    ;-Schritt 2 mit Umlauf
    BildMittelpunktx=mittelpunktx+Cos(2*#PI/Bilder*a+kreislauf)*Radius
    BildMittelpunkty=mittelpunkty+Sin(2*#PI/Bilder*a+kreislauf)*Radius
    ;- Schritt 3
    Bildx=BildMittelpunktx-ImageWidth(a)/2
    Bildy=BildMittelpunkty-ImageHeight(a)/2
    ;- Schritt 4
    DrawImage(ImageID(a),Bildx,Bildy)
    ;- Nur zur Verdeutlichung (grüne Ankerkreise)
    Circle(BildMittelpunktx,BildMittelpunkty,5,$ff00) 
  Next
  ;- wie auch das hier (der Kreis auf dem die Bilder liegen)
  DrawingMode(#PB_2DDrawing_Outlined)
  Circle(mittelpunktx,mittelpunkty,Radius,$ff) 
  StopDrawing()
  SetGadgetState(1,ImageID(0))

  Delay(10)
Until WindowEvent()=#PB_Event_CloseWindow
Zuletzt geändert von Macros am 05.01.2008 14:01, insgesamt 1-mal geändert.
Bild
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Danke! :D
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Hab noch kurz einen Beispielcode hinzugefügt
Bild
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Jo den hatte ich auch schon gefunden,trotzdem danke.
Danke für das anpassen des codes an meine bedürfnisse!

Ich brauche das für mandalas.
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

saubere arbeit :D
my pb stuff..
Bild..jedenfalls war das mal so.
Antworten