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:

Teilweise transparente Fenster erstellen?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
surfer87



Anmeldungsdatum: 16.09.2004
Beiträge: 103

BeitragVerfasst am: 29.08.2007, 14:46    Titel: Teilweise transparente Fenster erstellen? Antworten mit Zitat

Hi, ist es möglich ein Programm zu erstellen bei dem nicht der altbekannte Fensterrahmen druh herum ist, sondern das ganze teilweise transparent gestaltet werden kann?
Würde sich für kleinere Tools eignen, die man nicht in einem großen Fenster "im Weg" haben möchte.
Oder geht das nur mit der WinAPI? Damit hab ich mich nämlich noch nicht soo sehr beschäftigt.
Danke sehr.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 29.08.2007, 14:53    Titel: Antworten mit Zitat

Befehlsreferenz!! Screen/Screenres, Flags !!

Ref hat Folgendes geschrieben:

&H08 'Ab v0.17: kein Rahmen

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 29.08.2007, 15:27    Titel: Antworten mit Zitat

@Eternal_Pain: Gilt aber nur für SCREENRES-Fenster, und nicht mit durch WinAPI geöffnete Fenster..

Sry, aber die Lösung hab ich leider auch nicht..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
surfer87



Anmeldungsdatum: 16.09.2004
Beiträge: 103

BeitragVerfasst am: 29.08.2007, 15:41    Titel: Antworten mit Zitat

Ja klar kann ich mit Screenres, z.b. den Flag &H10 oder &H40 setzen, das Problem daran ist nur, dass sich das Fenster auf einmal vervielfältigt und eine Spur nach unten rechts zieht.

Die Transparenz selbst müsste ich dann mit, wenn ich das richtig verstanden habe, durch die Alpha-Werte erreichen? Und das geht auch mit Paint oder nur mit Put?

Keine Sorge ich schaue durchaus in die Referenz, mir ist halt nur gerade ein Problem aufgefallen.

Aber danke schonmal.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 29.08.2007, 16:47    Titel: Antworten mit Zitat

also ich hatte dazu mal ein beispiel geschrieben, da war dann die aktuelle transparenz-farbe des fensters (ab 15 bit: rgb(255,0,255) unter 15 bit: farbe 0) durchsichtig, also man sieht, was drunter ist. falls du den Alpha-Kanal ("halbdurchsichtiges fenster") ansprechen möchtest: das geht nur unter windows XP / vista und mit winAPI.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 29.08.2007, 20:21    Titel: Antworten mit Zitat

Geht afaik auch mit 2k. zwinkern
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 29.08.2007, 23:45    Titel: Antworten mit Zitat

Progger_X hat Folgendes geschrieben:
@Eternal_Pain: Gilt aber nur für SCREENRES-Fenster, und nicht mit durch WinAPI geöffnete Fenster..


Progger_X wenn Du den Satz "Oder geht das nur mit der WinAPI?" gelesen haettest, waere Dir vielleicht aufgefallen das nach einer moeglichkein OHNE API gefragt wurde!

sufer87 hat Folgendes geschrieben:
Ja klar kann ich mit Screenres, z.b. den Flag &H10 oder &H40 setzen, das Problem daran ist nur, dass sich das Fenster auf einmal vervielfältigt und eine Spur nach unten rechts zieht.

kann ich mir leider nicht erklaeren, ist bei mir noch nie der fall gewesen...
Und ein paar einschraenkungen muss es wohl geben... also die Tatsache das es mit einem buffer gehandelt werden muss, was meines erachtens nicht sehr schwer/schlimm ist... fuer mich persoenlich immernoch die einfachere Wahl, statt mit moeglichen WinAPI befehlen rumzumachen....

ein wiklich sehr einfaches und kurzes beispiel
Code:

Screenres 100,100,32,,&h10 or &h20


Dim Testbuffer as any ptr=ImageCreate (100,100,&h00FF00FF)
Line Testbuffer,(0,0)-(99,99),&hFFFF0000
Put (0,0),Testbuffer

sleep


das Fenster selbst laesst sich meines wissens jetzt nur noch mit den ScreenControl befehlen steuern....
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
surfer87



Anmeldungsdatum: 16.09.2004
Beiträge: 103

BeitragVerfasst am: 30.08.2007, 08:36    Titel: Antworten mit Zitat

So ich habe mal einen Screenshot gemacht für folgenden Code:

Code:
SCREENRES 500,500,32,,&h10
line (50,50)-(150,150),,bf
sleep





@ Eternal_pain: Bei deinem Source kam folgender Fehler:

Code:
C:\Programme\FreeBasic\FBIDETEMP.bas(4) : error 11: Expected constant
Dim Testbuffer as any ptr=ImageCreate (100,100,&h00FF00FF)


Ich hoffe mir kann ja jemand helfen.
Danke euch.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 30.08.2007, 08:43    Titel: Antworten mit Zitat

Welches Windows benutzt Du und welche Compiler Version hast Du?

Code:
C:\Programme\FreeBasic\FBIDETEMP.bas(4) : error 11: Expected constant
Dim Testbuffer as any ptr=ImageCreate (100,100,&h00FF00FF)


Das ließe sich beheben in dem man das in zwei Zeilen aufteilt, bin allerdings der Meinung das es an einer aelteren Compilerversion liegt...
Habe den mit der aktuellen 0.18.1b getestet...

Dein Code im uebrigen macht bei mir ebenfalls das was er soll... grosser schwazer rahmenloses fenster mit weissen rechteck zwinkern
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
surfer87



Anmeldungsdatum: 16.09.2004
Beiträge: 103

BeitragVerfasst am: 30.08.2007, 09:03    Titel: Antworten mit Zitat

Okay das klappt nun mit der aktuellen Version 0.18.
Hatte vorher eine ältere.

Nun ergibt sich aber ein neues Problem.
Es scheint Fälle von Inkompatibilitäten zu geben. Unter anderem dieser
neu eintretende Fehler:

C:/Isis/FBIDETEMP.bas(49) error 137: Suffixes are only valid in -lang deprecated or qb, found 'dbvardata' in 'Dim dbvardata$(23)'


OS ist WinXP Professional.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 30.08.2007, 09:07    Titel: Antworten mit Zitat

Das heisst das Variablen mit Suffixes also $ % und wie sie alle waren nicht mehr gebraucht bzw benutzt werden... wie der Compiler schon sagt.. (wenn es bereits eine groessere arbeit war, die man nun einfach mal zum laufen bekommen moechte) kann man in der Compiler Option (wenn es die FBIDE ist bei Ansicht->Einstellungen->Free Basic->Compiler Befehle) noch ein "-lang deprecated" hinzufuegen um auch aeltere FB Programme lauffaehig zu compilieren. Empfehlenswert waere dann aber es anzupassen....
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
surfer87



Anmeldungsdatum: 16.09.2004
Beiträge: 103

BeitragVerfasst am: 30.08.2007, 09:23    Titel: Antworten mit Zitat

ah bestens das funktioniert soweit.
Danke sehr lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 30.08.2007, 09:25    Titel: Antworten mit Zitat

Also statt
Code:
Dim dbvardata$(23)

lieber ein
Code:
Dim dbvardata(23) as string

und dann alle dbvardata$(irgendwas) in dbvardata(irgendwas) umwandeln.

Früher (QB) waren allerdings a$ und a zwei verschiedene Variablen. Durch den Wegfall der Suffixe sind sie es jetzt nicht mehr.

(edit: ich war wohl zu langsam happy )
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 30.08.2007, 17:39    Titel: Antworten mit Zitat

@Wie_mache_ich_das_mit_der_WinAPI:
Naja.
Man erstellt ein Rahmenloses Fenster, dass was transparent sein soll handlet man so (Ablaufschema):
-Per BitBlt den Bereich unter dem Fenster kopieren.
-Verknüpfen usw.
-Maske erstellen

-Fensterinhalt schreiben

Bei dem rotem Abschnitt wird dann folgendes gemacht:
-Das was jetzt da ist wird komplett schwarz eingefärbt (nat. in einem MemDC!)
-Verknüfpen
-Der Rest

Wer genaueres wissen will: Ich schaus gerne im petzold nach! (Hmm, wäre auch ein interessantes Tut...)
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 30.08.2007, 17:42    Titel: Antworten mit Zitat

geht viiiiel einfacher per winapi... sofern das fenster immer die selbe form hat läuft das per regions. falls man eine schlüsselfarbe hat, kann man's mit einem einzigen befehl machen, der aber erst ab win2k funkioniert. was du da vorschlägst ist einfach.... nutzlos.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 30.08.2007, 18:02    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
was du da vorschlägst ist einfach....
vollkompatibel zu jedem 32-Bit Windows.
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 30.08.2007, 18:02    Titel: Antworten mit Zitat

Hm, so ähnlich hat der Acrobat Reader das afaik bei Windosen unter 2k gemacht. lächeln
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 30.08.2007, 18:16    Titel: Antworten mit Zitat

Ich glaube, wir müssen unter "teilweise transparent" zwischen zwei völlig verschiedenen Fällen unterscheiden:
1.) Shaped Window, also Fenster mit einer ausgefallenen Form wie der Windows Media Player mit Skin.
2.) Alphachannel-Effekt wie in der Aero Glass-Oberfläche von Windows Vista sowie das Aqua-Design bei MacOS X.
Ersteres dürfte kein Problem sein (ich kenne die APIs dazu überhaupt nicht, aber auf jeden Fall erscheinen die Effekte wie gerundete Ecken beim RealOne-Player schon in den älteren Windows-Versionen wie 98 und 2000), zweiteres dagegen nur mit entsprechend hochgezüchteter Grafikhardware, ausser man programmiert selber etwas Langsames auf POINT() und PSET-Basis.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 30.08.2007, 18:21    Titel: Antworten mit Zitat

zweiters läuft nicht nur auf neuer hardware, alpha- und transparenz-effekte aus der NT-API laufen auch gut auf alten Rechnern... ab win 2k natürlich.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
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