Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

sGUI - eine kleine GUI Simulation
Gehe zu Seite Zurück  1, 2, 3 ... , 11, 12, 13  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 131

BeitragVerfasst am: 10.05.2019, 21:34    Titel: Antworten mit Zitat

okay hab den fehler gefunden ich habe nun alle
imagecreate's in
Code:

imagecreate(gad->GadWidth,Gad->GadHeight,0,32)
oder
imagecreate(gad->GadWidth,Gad->GadHeight,"variable",32)

geaendert damit die "texturen" auch wirklich 32bit farbtiefe haben.

ausserdem musste ich noch in der sGui_MCP.bas folgendes aendern.
Code:

sub GUIBuild_Crawler(win as sGUIWindow ptr)
...
  childgad=win->GadgetList->GetFirst
  if childgad then
    do
      childgad->DoDraw(childgad)   
      if childgad->GadgetWindow then GUIBuild_Crawler(childgad->GadgetWindow)     
      put win->DrawBuffer->img,(win->ContentOffsetX + childgad->PosX, win->ContentOffsetY + childgad->PosY),childgad->DrawBuffer->img,alpha <------ das hier
      childgad=cast(Gadget ptr,childgad->next_node)
    loop until childgad=0
  end if
...


soweit ist das jetzt FB und OpenB3D mit 2d.bi kompatibel zwinkern

gruesse

PS: ich koennte dir ja die umgebaute version mal bei nem uploader hochladen das du nich alles selber umschreiben musst.

Edit: hier die ueberarbeitet version zwinkern
http://users.freebasic-portal.de/haubitze/sGUI-alpha-fix.zip
und ein bild mit einem AlphaValue von 224 lächeln

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 530
Wohnort: Jüterbog

BeitragVerfasst am: 11.05.2019, 11:14    Titel: Antworten mit Zitat

Vielen Dank fürs Arc, macht es einfacher lächeln
Sichte grad mal so durch...
folgendes:
Code:

property ColorStorage.GadFrame (RGBValue as ulong)
  'Storage(15) = (RGBValue and &HFFFFFF) or Storage(0)
  Storage(15) = RGBValue or Storage(0)
End property


Überbleibsel von nem Test? Ansonsten würden sich die gesetzten Bits des AlphaAnteils bei Änderung nur auflaufend sammeln.
Ich meine man kann ja jetzt sowohl über den RGBValue des GadFrame Property einen Alphawert mitgeben als auch über Colors.AlphaValue separat.
Aber ich kann mich irren.

Ps: sieht schonmal cool aus da oben

pps:
zwinkern
First Release! Wow, lang ists her:
https://1drv.ms/u/s!AsTPhVzcfzRrh_RAu0-HBNd3I6OeAw
Iwie find ich die Vista Optik garnicht sooo schlecht



Mutton lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 131

BeitragVerfasst am: 11.05.2019, 16:36    Titel: Antworten mit Zitat

Muttonhead hat Folgendes geschrieben:

folgendes:
Code:

property ColorStorage.GadFrame (RGBValue as ulong)
  'Storage(15) = (RGBValue and &HFFFFFF) or Storage(0)
  Storage(15) = RGBValue or Storage(0)
End property



ja das war ein test hab dann aber festgestellt das das so nicht geht, habe es daher wieder in den orginal zustand versetzt.

PS: is das richtig mit dem link? sind nur 3 datein drin in dem zip.
der ordner heist (sGUI)SimpleGUI.000. und ist von 2009.
haste da evtl was altes verpackt? ;D
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 530
Wohnort: Jüterbog

BeitragVerfasst am: 11.05.2019, 18:40    Titel: Antworten mit Zitat

Zitat:
is das richtig mit dem link? sind nur 3 datein drin in dem zip.
der ordner heist (sGUI)SimpleGUI.000. und ist von 2009.
haste da evtl was altes verpackt? ;D


Richtig grinsen ! Die erste "Veröffentlichung"... 2009!!
(Hab da so einen Ordner mit diversen Versuchen)
Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 530
Wohnort: Jüterbog

BeitragVerfasst am: 11.05.2019, 20:30    Titel: Antworten mit Zitat

@Haubitze:
Teste grad mal UserGFX mit den Anpassungen.

Das BMP-Font-Problem schiebe ich jetzt mal ganz weit nach hinten. Es funzt zwar irgendwie, nur halt nicht richtig.

Allerdings ist jetzt der User bei sämtlichen FBGFX Befehlen bei der Farbgebung immer an das Farbformat &HAARRGGBB gebunden. genauer "&HFFrrggbb"

Meister Yoda würde sagen: glücklich, nicht so ganz, ich bin.
Eigentlich wollte ich irgendwelches Umwickeln der FBGFX Befehle vermeiden... nicht das ich es in sGUI schon getan hätte zwinkern
Wenn ich weiß, ich bekomme ein Image Pointer, dann sollte halt klar sein, welche Möglichkeiten damit gegeben sind.

Hmm...
Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 131

BeitragVerfasst am: 11.05.2019, 20:56    Titel: Antworten mit Zitat

naja verstehn tuh ich dich schon aber macht das so einen grossen untershied
ob ich pset(10,46),rgb(255,0,0) schreibe oder pset(10,46),rgba(255,0,0,255)? zwinkern

gut letzters ist 5 zeichen laenger :/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 131

BeitragVerfasst am: 12.05.2019, 15:52    Titel: Antworten mit Zitat

hm so ein mist.... wie ich gerade sehe hatt angros47 einen patch rausgebracht
der es ermoeglicht FBGFX im OpenGL window zu zeichnen ohne diese hackige
2d.bi.

von daher werde ich mal deine alte version benutzen um zu sehen ob das flutscht, wenn ja dann brauchst du dich mit diesem alpha gedoehns nicht mehr
auseinander zu setzen :/

salute

Edit: leider bekomm ich das mit dem internen OGL renderer nicht hin, hab
entweder nur die 3d scene oder nur die sGUI auf dem bildschirm :/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 131

BeitragVerfasst am: 25.05.2019, 12:04    Titel: Antworten mit Zitat

hallo Mutton,

hab im englischen forum mal angros nach dem internen 2d render fuer opengl
gefrag, ob und wenn ja was ich falsch mache.
ausserdem moechte ich dich bitten mich mal auf den neuesten stand zu bringen zwinkern
ich braeuchte jetzt naehmlich scrollbars und diese TO_ text gadgeds im fenster.

ich hoffe ich nerv dich nicht mit meinen wuenschen :/

gruesse

PS: konnte mich leider erst jetzt wieder melden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 131

BeitragVerfasst am: 04.06.2019, 23:31    Titel: Antworten mit Zitat

Hey Mutton,
angros47 aus dem englischen forum hatt mir eben eine demo fuer den internen
opengl renderer gepostet. mit ein paar kleinen aenderungen seh ich nun die
auf alpha getrimmte sGUI. netter nebeneffekt fast doppelt soviele fps (~70-80 / ~30-40) lächeln werde die alte mit trans arbeitende sGUI, die tage, auch mal testen und dir rueckmeldung geben ob das auch flutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 530
Wohnort: Jüterbog

BeitragVerfasst am: 05.06.2019, 19:32    Titel: Antworten mit Zitat

Hallo Haubitze...

Derzeit hakt es ein wenig bei der Umsetzung der Listbox, aber das werd ich schon hinbekommen. Also die ist noch nicht fertig.
Für die Listbox, ComboBox(noch nicht umbesetzt) und das Menüsystem(auch noch nicht da) soll jetzt eine einheitliche
sogenannte "EntryList" als "Datengrundlage" herhalten. Diese Liste ist aber ein externes Objekt.

Dadurch durchlaufen nun alle Controls eine Art Update-Routine, welche dann auf entsprechende veränderte Umstände das Control neu
konfiguriert. Bei den meisten Controls ist diese Routine jedoch einfach nur leer.

Das Einbinden des User-Images ist jetzt in die DrawWindow/DrawRootWindow Routinen gewandert.

derzeit entferne ich diverse "DrawGadget()" bzw "->DoDraw()" Aufrufe aus etlichen Subs. Diese machen das System nur langsam und werden
nun nicht mehr benötigt, da ja das Zeichnen nun zentral im GUIBuild_Crawler abläuft.
Gut möglich dass das Zeichnen in ein Image, wenn es garnicht notwendig ist, auch Auswirkung auf die Transparenzgeschichte hat.

Hier nochmal die Stellen zum Herumschrauben (hoffentlich sinds auch alle):

sGUI_WindowGadgetType.bas
function EnableUserGFX

sGUI_MCP.bas
sub MasterControlProgram
sub GUIBuild_Crawler

Window.bas
function AddWindow
function AddRootWindow
sub DrawWin
sub DrawRootWin

in folgenden Dateien alle Add...Routinen, die ein Image per IMAGECREATE erzeugen:
Arrows.bas
ListBox.bas
ListBox_Selector.bas
RadioCheck.bas
ScrollBar.bas
ScrollBar_Container.bas
SimpleToggle.bas
Window_CloseButton.bas
Window_DragBar.bas

Die Fenstercontrols, also DragBar und CloseButton, sind umgeschrieben worden. Der eigentliche Grund waren merkwürdige Transparenzeffekte
Ein Fenster mit Kopfzeile hat nun immer ein Dragbar, das klingt erstmal doof, ist aber so lächeln
Das Dragbar zeigt nun den Fenstertitel an, und, wenn das entsprechende Flag gesetzt ist, funktioniert es und verschiebt auch das Fenster.
Anderenfalls ist das Dragbar im SLEEP-Modus, schon bleibt das Fenster wo es ist.

Die Referenz hinkt natürlich nach... traurig

https://1drv.ms/u/s!AsTPhVzcfzRrh_UcvZlBv2fHtYDexA

Mutton

ps:
ich stelle grad fest das die Signalweitergabe bei mehrfach zusammengesetzten Controls nicht richtig funktioniert. Die Listbox ist nun ein solcher Fall.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 131

BeitragVerfasst am: 07.06.2019, 14:42    Titel: Antworten mit Zitat

hey Mutton,

danke fuers update, laeuft auf anhieb (listbox,scrollbar usw eingeschlossen) lächeln
nun hast du aber die dragbar irgendwie putt gemacht grinsen

wenn ich mir in einem fenster eine dragbar erstelle und das fenster ist nicht
verschiebbar, dann kann ich es trozdem mit der eigenen dragbar verschieben.
ka ob das so gewollt ist. ich brauche die dragbar als picker (fuer coordinaten
oder farben) oder giebet da eine bessere methode.
(position der dragbar innerhalb des fensters wird gelesen)

gruesse
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 530
Wohnort: Jüterbog

BeitragVerfasst am: 07.06.2019, 15:42    Titel: Antworten mit Zitat

ich hab dir mal per PrivateMessage nen Link geschickt. ist grad mein aktuelles "Arbeitsverzeichnis". diesesmal über GoogleDrive. Ich komme nach ner PW-Änderung grad nicht an mein OneDrive ran lächeln
Tausche mal das Verzeichnis und berichte mal was passiert.
Hatte hier auch ein paar Probleme mit der Dragbar.

Allerdings macht ein Dragbar genau das: seine eigenes Parentfenster verschieben.... grinsen .
Wenn ich das zum Fenster gehörige per FLAG in den SleepModus setze und du fügst danach ein anderes hinzu, dies könnte etwas kollidieren grinsen

Vielleicht ist ein "SpecialGad" dann die Lösung

Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 131

BeitragVerfasst am: 07.06.2019, 20:29    Titel: Antworten mit Zitat

hm ja klar ne dragar is halt zum draggen da, evtl waere ein dragable button
oder sowas ne loesung oder man versieht das dragbar mit nem extra flag.

hab auch schon simple gadged versucht das klappt aber auch nich.
naja zumindesthab ich schon mal scrollbars und listboxen.

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 530
Wohnort: Jüterbog

BeitragVerfasst am: 07.06.2019, 20:44    Titel: Antworten mit Zitat

machen wir es kurz: erstell doch mal nen Lastenheft:
1.Aussehen.. Fadenkreuz, Pipette oder sowas...
2.Beweglichkeit.. es soll ja wohl mit der Maus über ein nicht weiter definiertes Areal bewegt werden
usw und sofort.
3. Fenster oder Gadget? ein paar Sachen lassen sich auch gut nur mit der Position eines Fensters regeln, also auch gänzlich ohne Gad
Davon mal abgesehen, generell ist jedes Element (egal ob Win oder Gad) über ->PosX/->PosY während der Laufzeit verschiebbar!
4. was soll es an Informationen liefern?
ich werde dann mal sehen, ob ich da was zusammenschrauben kann
Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 131

BeitragVerfasst am: 07.06.2019, 21:02    Titel: Antworten mit Zitat

also gut ...
1. ein fadenkreuz waere super
2. es soll nur innerhalb eines zuvor definierten fensters bewegbar sein (mit der maus)
3. ein gadget waere fuer mich wohl die loesung der wahl.
4. es soll mir die position innerhalb eines fensters geben (diese kann ich ja per posX,posY ermitteln)


zu 3. ich habe probleme mir meine eigenes ding zu basteln da ich die fenster
im fenster spaeter mit der scrollbar auch noch verschiebe, also die fenster dann nicht mehr in ihrer orginal position stehen bzw auch nur halb zu sehen
sind. da wird dann wohl zuviel rumgerechnet, daher denke ich ein gadget
das seine position relativ zum fenster zurueckgiebt waere super.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 530
Wohnort: Jüterbog

BeitragVerfasst am: 08.06.2019, 09:57    Titel: Antworten mit Zitat

CrossHair.bas:
Code:
namespace sGUI

declare function AddCrossHair(win as sGUIWindow ptr,PosX as integer,PosY as integer) as Gadget ptr
declare function CrossHairActions(gad as Gadget ptr,action as integer) as integer
declare sub DrawCrossHair (gad as Gadget ptr)

'ctrl(13) mouse-over-control-flag
function AddCrossHair(win as sGUIWindow ptr,PosX as integer,PosY as integer) as Gadget ptr
  function=0 
  dim as Gadget ptr gad
  if win=0 then win=RootWindow
  gad=win->GadgetList->AppendNew (GadgetType)
  if gad then
    gad->parent=win
    gad->Selection=0
    gad->Activation=0
    gad->PosX=PosX
    gad->PosY=PosY
    gad->GadWidth=15
    gad->GadHeight=15
   
    'gad->DrawBuffer->img=imagecreate(gad->GadWidth,Gad->GadHeight)
    gad->DrawBuffer->img=imagecreate(gad->GadWidth,Gad->GadHeight,0,32)'by Haubitze
    'Da man das Fadenkreuz nicht ständig neuzeichnen muß, erledigen
    'wir die Grafik gleich hier und in der DrawCrossHair-Routine machen wir dafür nüscht
    if gad->DrawBuffer->img then
      ClearBox gad->DrawBuffer->img,0,0,gad->GadWidth,gad->GadHeight
      FillA gad->DrawBuffer->img,0,6,5,3,Colors.Black,Colors.White,0'l
      FillA gad->DrawBuffer->img,10,6,5,3,Colors.Black,Colors.White,0'r
      FillA gad->DrawBuffer->img,6,0,3,5,Colors.Black,Colors.White,0'o
      FillA gad->DrawBuffer->img,6,10,3,5,Colors.Black,Colors.White,0'u
    end if
   
    gad->DoDraw     =@DrawCrossHair
    gad->DoAction   =@CrossHairActions
    'gad->DoUpdate=@FakeUpdate' zu finden im Constructor des Gadgettypes in sGUI_WindowGadgetType.bas
    function=gad
  end if
end function


function CrossHairActions(gad as Gadget ptr,action as integer) as integer
  function=0
  dim as sGUIWindow ptr win
  win=cast(sGUIWindow ptr, gad->parent)
  select case action     
    case GADGET_LMBHIT
      gad->Ctrl(0)=MOUSEX - gad->PosX
      gad->Ctrl(1)=MOUSEY - gad->PosY   
    case GADGET_LMBHOLD,GADGET_LMBHOLDOFF
      gad->PosX =MOUSEX - gad->Ctrl(0)
      gad->PosY =MOUSEY - gad->Ctrl(1)
      'Limiter
      if gad->PosX<-7 then gad->PosX=-7
         if gad->PosY<-7 then gad->PosY=-7
      if gad->PosX>win->ContentWidth-8 then gad->PosX=win->ContentWidth-8
      if gad->PosY>win->ContentHeight-8 then gad->PosY=win->ContentHeight-8     
  end select 
end function


sub DrawCrossHair (gad as Gadget ptr)
end sub

end namespace


Gadget_CrossHair.bas:
Code:
#include "sGUI\sGUI.bas"
#include once "sGUI\CrossHair.bas"
using sGUI

screen 19,32
InitGUI

LoadProportionalFont("Ubuntu\Ubuntu-R\Ubuntu-R.bmp")
LoadFixedFont("Ubuntu\UbuntuMono-R\UbuntuMono-R.bmp")

dim as sGUIWindow ptr win
dim as Gadget ptr cross

win=AddWindow(0,350,150,120,100,"win",WFLAG_WINDOWTYPE2 or WFLAG_DRAGABLE)
cross=AddCrossHair(win,0,0)

ShowWindow(win)
GadgetOn(cross)

dim as integer ff=freefile
open cons for output as ff
do
  sleep 1
  MasterControlProgram
  if GADGETMESSAGE then
    select case GADGETMESSAGE
      case 0     
    end select
  end if
loop until SCREENCLOSEBUTTON
close ff


musste allerdings jetzt wieder im GUIBuild_Crawler an der Transparenz
herumfummeln:
Zeile 246:
Code:
        put win->DrawBuffer->img,(win->ContentOffsetX + childgad->PosX, win->ContentOffsetY + childgad->PosY),childgad->DrawBuffer->img,trans'pset


ps: der "Hotspot" ist dann auf gad->PosX+7 gad->PosY+7

Es ist ja nur ein Beispiel wie es funktionieren könnte.

Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 131

BeitragVerfasst am: 08.06.2019, 12:00    Titel: Antworten mit Zitat

wow das war schnell.

ja warum das gerade beim dem crosshair nicht mit der transparenz funtzt, ka.
aber das funtzt schon super, nur das das crosshair nicht in den rahmen des
fensters verschiebbar sein sollte.

ich schau mal woran das mit der transparenz liegen koennte.

edit: okay die zeile 246 auf ,ALPHA aendern sollte klappen. zumindest machts das bei mir. hoffe das hilft.

edit2: auf jeden fall istdas genau das was ich brauche danke Mutton lächeln

edit3:sauber Mutton alles laeuft wie es soll nun muss ich das ganze nur noch
huebsch verpacken lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 530
Wohnort: Jüterbog

BeitragVerfasst am: 08.06.2019, 21:51    Titel: Antworten mit Zitat

... jetzt muss ich nochmal nachfragen, aufgrund des Screenshots: du nimmst nen "normales" Fenster, packst nen Scrollbar rechts hin und ein "überhohes" ChildWindow und baust darin die gesamte GUI auf? Und mit dem Scrollbar verschiebst du das ChildWindow in der Höhe um den Rest des überhöhten Fensters sichtbar zu machen?
geschockt

Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Haubitze



Anmeldungsdatum: 14.10.2009
Beiträge: 131

BeitragVerfasst am: 08.06.2019, 22:43    Titel: Antworten mit Zitat

jepp genau so, warte naturlich noch auf den minimize button ;D
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 530
Wohnort: Jüterbog

BeitragVerfasst am: 08.06.2019, 23:02    Titel: Antworten mit Zitat

.. da hat jemand die WINFLAGS genau inspiziert... steht aber erstmal hinten an.
interessant ist allerdings dein Workaround für ein Windowfeature, also grösserer Fensterbereich scrollen, korrektes Erkennen der Controls usw.
Funzt das denn? ich hab sowas noch nicht probiert. Du machst das "nur" in der Y Achse, dadurch wird das Scrollbar immer sichtbar sein.... ist aber interessant zu wissen, das die Berechnung von Maus- zu Win/Gadget- Koordinaten korrekt funktioniert, auch wenn das childwin verschoben wird.!

Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3 ... , 11, 12, 13  Weiter
Seite 12 von 13

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz