 |
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 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 03.11.2009, 18:56 Titel: Grafik und API Elemente gemeinsam nutzen - möglich? |
|
|
Hi zusammen,
ich plane gerade ein Programm welches notwendigerweise einen hohen Anteil an Grafik besitzt (Tile Engine). Zudem wird es nötig sein Linien und einzelne Pixel darzustellen.
Ebenfalls werden aber die API Elemente benötigt wie Buttons, Labels, Menü etc.pp.
Da ich nicht vor habe extra eine eigene GUI Oberfläche zu programmieren habe ich mich gefragt wie dies wohl am besten zu organisieren wäre.
Für Grafik allein würde man wohl zur FBGFX neigen. Soweit ich das hier im Forum in Erfahrung bringen konnte kann man in einem Grafik Screen jedoch keine API Elemente darstellen.
Ein reines "Windows Fenster" mit einem großen Bild darin wäre natürlich auch möglich. In diesem wiederum könnte ich nun die Tiles darstellen. Allerdings denke ich das dies a) wesentlich langsamer wäre und es b) wohl Probleme beim zeichnen der Linien und Punkte geben würde.
Wie würdet ihr das lösen? Vielen Dank schonmal _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 03.11.2009, 19:12 Titel: |
|
|
@EPS: Da kann ich dir nur mein aktuelles Projekt empfehlen, welches aber erst kurz vor dem nächsten entscheidenden release steht. (welches dann interessant für dich sein sollte)
Das ist eine Gui welche man in eine separates fenster auslagern kann. So das du dein normales FBGFX-Fenster frei für dein Projekt hast: http://forum.qbasic.at/viewtopic.php?t=6757
Alternativ kannst du dir auch mal ein anderes kleinere projekt von mir anschauen: http://forum.qbasic.at/viewtopic.php?t=6841
Dort gehts um ein 2. GFX-Fenster welches mittels SDL realisiert wird.
Ich habe SDL bisher sehr gescheut, weil man eine zusätzliche DLL unter Windows mitbringen und das SDL-Package unter Linux installiert haben muss. Aber das ist weitgehend kein wirkliches problem. Man gewinnt aber unheimlich viel komfort, sobald man ein SDL-Fenster verwendet.. |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 03.11.2009, 19:22 Titel: |
|
|
Erst einmal danke. 2 Fenster kommen aber in jedem Falle nicht in Frage und auch ein extra geschriebenes GUI möchte ich nicht verwenden - sonst würde ich das auch selbst proggen.
- nix für ungut aber GUI's zu schreiben ist ne harte Sache, das weis ich aus Erfahrung, insbesondere den Komfort und die Flexibilität wie unter Windows zu erreichen ist (nahezu) unmöglich. Das fängt schon bei der Texteingabe an und hat wohl kaum ein Ende.
Dann würde ich eher auf die "nur Windows" Variante zurückgreifen.
ABER: in BlitzBasic als Beispiel habe ich WinAPI Elemente in den DX Screen hineinbekommen - funktioniert natürlich nur im Fenster- und nicht im Fullscreen Modus. Letzterer wird aber auch nicht benötigt. Daher hab ich mich nur gefragt ob das mit der FBGFX lib eben auch ginge. _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 03.11.2009, 22:41 Titel: |
|
|
Hi E-P-S!
Ich verstehe vielleicht noch nicht ganz, was du mit "API" meinst. API ist ja AFAIK eine Sammlung von Routinen "nach aussen" zum Ansprechen eines Hard- oder Softwaresystems. Ich nehme an, dir geht's hier um eine ganz spezielle Klasse von API's, nämlich um GUI-API's?
Wenn dem so ist: Wenn du GUI-Elemente brauchst, würde ich dir zu einer fertigen Engine raten. Es scheint ja in FB aus irgendwelchen Gründen unpopulär, sich an fertige GUI-Toolkits zu linken - allenfalls noch an die Windows-(GUI)-API.
Ich hab mich jetzt in GTK eingearbeitet und das läuft gut - du kannst dir selbst auf der Projektseite ein Bild machen. Qt soll noch besser sein, aber da gibt's noch kein fertiges FB-Binding. wxwidgets gibts auch noch, kenne ich aber nicht.
Wichtig ist: Diese Toolkits liefern ja wesentlich mehr mit als nur GUI-Klassen. Das sind eher Rundumversorgungs-Frameworks, egal ob es um Hashmaps, Listen, Sortierroutinen, Datenbank-Ankopplung oder sonstwas geht.
Die ganzen Diskussionen über 1 oder 2 gfx-Fenster kannst du aus dieser Sicht ad acta legen - du kannst soviele Fenster haben wie du willst, ohne jede Verrenkung. Und du kannst grafisch eigentlich alles machen - sogar direkt in den Bildspeicher poken, das ist bei GTK absolut kein Problem.
Bleibt der Aspekt: Single-exe oder Multi-DLL-Programm. Das ist sicher der kleine Haken unter Windows, dass es mit der kleinen schlanken exe vorbei ist, sobald du nicht voraussetzen willst, dass die entsprechende Runtime schon installiert ist. Auf der anderen Seite: Die GTK-Runtime mitzuliefern, kostet gezippt 8 MB - das sind heute auch nicht mehr Welten.
VG!
Croco |
|
Nach oben |
|
 |
E-P-S

Anmeldungsdatum: 16.09.2004 Beiträge: 500 Wohnort: Neuruppin
|
Verfasst am: 04.11.2009, 03:48 Titel: |
|
|
Hi croco97 - danke für die Antwort.
Du erkennst das völlig richtig - ich hatte mich etwas unpräzise ausgedrückt.
Die abschließende Größe des Programms oder der Programmteile ist mir ehrlich gesagt Wurst - das wär nicht wirklich das Problem.
Ob die Einbindung eines GUI Toolkits ne Lösung wäre - darüber hatte ich noch gar nicht nachgedacht, da ich davon ausging das sie eben nur Routinen und Funktionen für GUI Elemente bereitstellen.
Danke für die Aufklärung. Ich werd es mir in jedem Falle mal reinziehen. _________________ Man kann sich öfter als zweimal im Leben halb tot lachen. |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 04.11.2009, 11:07 Titel: |
|
|
@croco97: GTK ist ein klasse toolkit, aber leider kann man die bedienelemente meineswissens nicht in ein klassisches FBGFX-Fenster einbinden. Die meisten leute die in Basic programmieren kennen die nativen-basic anweisungen sogut wie ihre westentasche. Da fällt der umstieg auf ein anderes toolkit mit anderen befehlssätzen schwer.
Wenn man gut darin ist FBGFX-basierende programme zu programmieren hat man nun mal die schwierigkeit, das man erstmal ohne komfortable bedienelemente auskommen muss... oder man schreibt sie selbst. (oder bedient sich bei den zahlreichen FB-Gui-Kleinprojekten)
Wenn die gui-elemente auch noch plattformunabhängig sein sollen, fällt die Windows-API ja auch noch weg. GTK/QT/wx sind unter linux meistens kein problem, weil die bibliotheken ja sogut wie immer direkt mitinstalliert werden. Da muss man dann keinen ballast mitschleppen... |
|
Nach oben |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 04.11.2009, 17:41 Titel: |
|
|
OneCypher hat Folgendes geschrieben: | @croco97: GTK ist ein klasse toolkit, aber leider kann man die bedienelemente meineswissens nicht in ein klassisches FBGFX-Fenster einbinden. Die meisten leute die in Basic programmieren kennen die nativen-basic anweisungen sogut wie ihre westentasche. Da fällt der umstieg auf ein anderes toolkit mit anderen befehlssätzen schwer.
|
Das mit den anderen Befehlen ist grösstenteils halb so schlimm. Der Weg von line() zu gdk_draw_line() ist nicht wirklich weit. Und ich schätze, der Aufwand, sich in ein paar Eigenheiten des jeweiligen Toolkits einzuarbeiten (wie funktioniert das Double Buffering?), ist ein Bruchteil dessen, FBGFX umzuprogrammieren....
Aber das ist natürlich auch so ein bisschen eine Frage von Lust oder Unlust. Wenn ich z.B. in der Arbeit oder Schule gezwungen bin, tagsüber mich dauernd in neue Sachen einzuarbeiten, will ich vielleicht nach Feierabend mich in vertrauten Gefilden austoben.
Zudem ist GTK zwar technisch exzellent dokumentiert -Material für Anfänger ist aber erstaunlich dürftig. Dem versuche ich ja mit den neuesten beiden Kapiteln des Oma-Tutorials für Freebasic ein wenig beizukommen. (Zweites Kapitel gibt's die nächsten Tage).
Bei mir ist es eher so, dass mich die Fähigkeit von FB, an alle möglichen Welten anzudocken, fasziniert.
Deinen Ansatz, mit GUIPTR eine kleine GUI-Komponentensammlung auf Basis der FBGFX zu schreiben, finde ich übrigens durchaus sehr sinnvoll Der Einarbeitungsaufwand ist da doch sehr viel geringer und man kann mal schnell eine nette Oberfläche zusammenstöpseln, ohne sich eine grosse Runtime oder Plattformbindung einzukaufen. Aber ein richtiges GUI-Toolkit, an dem Hunderte von Entwicklern schon seit Jahren sitzen, kann das nicht ersetzen. Und die FBGFX halt auch nicht, wenn es dran geht, mal ein grösseres und benutzerfreundliches Projekt zu bauen.
Viele Grüsse!
Croco |
|
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.
|
|