|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 10.05.2019, 21:34 Titel: |
|
|
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
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
http://users.freebasic-portal.de/haubitze/sGUI-alpha-fix.zip
und ein bild mit einem AlphaValue von 224
|
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 11.05.2019, 11:14 Titel: |
|
|
Vielen Dank fürs Arc, macht es einfacher
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:
First Release! Wow, lang ists her:
https://1drv.ms/u/s!AsTPhVzcfzRrh_RAu0-HBNd3I6OeAw
Iwie find ich die Vista Optik garnicht sooo schlecht
Mutton |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 11.05.2019, 16:36 Titel: |
|
|
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 |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 11.05.2019, 18:40 Titel: |
|
|
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 ! Die erste "Veröffentlichung"... 2009!!
(Hab da so einen Ordner mit diversen Versuchen)
Mutton |
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 11.05.2019, 20:30 Titel: |
|
|
@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
Wenn ich weiß, ich bekomme ein Image Pointer, dann sollte halt klar sein, welche Möglichkeiten damit gegeben sind.
Hmm...
Mutton |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 11.05.2019, 20:56 Titel: |
|
|
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)?
gut letzters ist 5 zeichen laenger :/ |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 12.05.2019, 15:52 Titel: |
|
|
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 |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 25.05.2019, 12:04 Titel: |
|
|
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
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 |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 04.06.2019, 23:31 Titel: |
|
|
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) werde die alte mit trans arbeitende sGUI, die tage, auch mal testen und dir rueckmeldung geben ob das auch flutscht. |
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 05.06.2019, 19:32 Titel: |
|
|
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
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...
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 |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 07.06.2019, 14:42 Titel: |
|
|
hey Mutton,
danke fuers update, laeuft auf anhieb (listbox,scrollbar usw eingeschlossen)
nun hast du aber die dragbar irgendwie putt gemacht
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 |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 07.06.2019, 15:42 Titel: |
|
|
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
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.... .
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
Vielleicht ist ein "SpecialGad" dann die Lösung
Mutton |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 07.06.2019, 20:29 Titel: |
|
|
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 |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 07.06.2019, 20:44 Titel: |
|
|
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 |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 07.06.2019, 21:02 Titel: |
|
|
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 |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 08.06.2019, 09:57 Titel: |
|
|
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 |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 08.06.2019, 12:00 Titel: |
|
|
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
edit3:sauber Mutton alles laeuft wie es soll nun muss ich das ganze nur noch
huebsch verpacken
|
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 08.06.2019, 21:51 Titel: |
|
|
... 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?
Mutton |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 08.06.2019, 22:43 Titel: |
|
|
jepp genau so, warte naturlich noch auf den minimize button ;D |
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 08.06.2019, 23:02 Titel: |
|
|
.. 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 |
|
|
|
|
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.
|
|