ScrollAreaGadget IM Screen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: ScrollAreaGadget IM Screen

Beitrag von PureLust »

Bisonte hat geschrieben:Jo so funktioniert das beispiel... Aber wie bereits erwähnt, ist das 3D Zeugs nicht wirklich was für mich...
Ist ja nochmehr Mathematik drin ;)
Wie gesagt - hab mit 3D bisher auch noch nichts gemacht, aber soweit ich das bisher so mitbekommen habe kann man ganz normal mit 2D seine Grafik rendern und dann die 3D-Gadgets einfach mit "RenderWorld()" darüber legen.
Also ohne jeglichen anderen 3D-Kram und somit auch "ohne Mathematik". ;)
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: ScrollAreaGadget IM Screen

Beitrag von STARGÅTE »

Hier mal n einfaches Beispiel:
Links: Einträge, Rechts Scroller.
Scroller gedrückt halten und verschieben ^^

Später köntne man dnan noch mehr funktionen einbauen:

Code: Alles auswählen

InitSprite()

OpenWindow(0, 0, 0, 800, 600, "Screen", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0), 0, 0, 0)
  
  
  #Size = 100
  Global Dim Text.s(#Size)
  For n = 0 To #Size
    Text(n) = "Eintrag "+Str(n)
  Next 

  
Repeat

  ClearScreen(0)

  StartDrawing(ScreenOutput())
  
  DrawingMode(1)

  DrawingMode(1|4)
  ItemHeight = TextHeight("|")
  ViewItems = 20
  ViewHeight = ItemHeight * ViewItems
  Items = ArraySize(Text())+1
  Height = ItemHeight * Items
  BoxHeight = ViewHeight*ViewHeight/Height
  If Move
   BoxY = SaveBoxY + WindowMouseY(0)-SaveMouseY
   Start = Height*BoxY/ViewHeight/TextHeight("|")
   If Start < 0 : BoxY = 0 : Start = 0 : EndIf
   If Start > Items-20 : BoxY = ViewHeight-BoxHeight : Start = Items-20 : EndIf  
  EndIf
  
  Box(100, 100, 400, TextHeight("|")*20, $FFFFFF)
  Box(470, 100, 30, TextHeight("|")*20, $FFFFFF)

  For n = 0 To 19
   DrawText(100, 100+n*TextHeight(Text(n+Start)), Text(n+Start), $808080)
  Next

  DrawingMode(1)
  Box(470, 100+BoxY, 30, BoxHeight, $C0C0C0)

  StopDrawing()

  FlipBuffers()

  Event = WindowEvent()
  Select Event
    Case #PB_Event_CloseWindow
      End
    Case 513 ; Anschlag
      If WindowMouseX(0) > 470 And WindowMouseX(0) < 500 And WindowMouseY(0) > 100+BoxY And WindowMouseY(0)< 100+BoxY+BoxHeight
        SaveMouseY = WindowMouseY(0)
        SaveBoxY = BoxY
        Move = #True
      EndIf
    Case 514 ; Loslassen
      Move = #False
  EndSelect

ForEver
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: ScrollAreaGadget IM Screen

Beitrag von Bisonte »

Danke Stargate :allright:

Mit deinem Ansatz von wegen Anzeigebereich usw, war ich jetzt schonmal soweit ein scrollarea mit tastatur
zu bedienen ;)

Nun versuch ich dein Beispiel mit der Maus mal zu verdauen.

Aber genau so (natürlich mit anderen Grafiken) wollt ich das eigentlich machen...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: ScrollAreaGadget IM Screen

Beitrag von PureLust »

Bisonte hat geschrieben:Aber genau so (natürlich mit anderen Grafiken) wollt ich das eigentlich machen...
Jo, wirste wohl so machen müssen, denn mit den 3D-Gadgets scheint das so garnicht zu funktionieren.
Hab' mich inzwischen mal ein wenig mehr in die 3D-Geschichte eingelesen und ein Mix aus 3D und 2D ist wohl nicht ohne Weiteres möglich.
Und ein "drüber legen" der 3D-Gadgets über die 2D Grafiken wohl erst recht nicht.

ScrollAreaGadget3D() ist für Dein Vorhaben also wohl vollkommen unbrauchbar, ... sorry. :|
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Antworten