Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
surfer87
Anmeldungsdatum: 16.09.2004 Beiträge: 103
|
Verfasst am: 29.08.2007, 14:46 Titel: Teilweise transparente Fenster erstellen? |
|
|
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 |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 29.08.2007, 14:53 Titel: |
|
|
Befehlsreferenz!! Screen/Screenres, Flags !!
Ref hat Folgendes geschrieben: |
&H08 'Ab v0.17: kein Rahmen
|
_________________
 |
|
Nach oben |
|
 |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 29.08.2007, 15:27 Titel: |
|
|
@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 |
|
 |
surfer87
Anmeldungsdatum: 16.09.2004 Beiträge: 103
|
Verfasst am: 29.08.2007, 15:41 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 29.08.2007, 16:47 Titel: |
|
|
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 |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 29.08.2007, 20:21 Titel: |
|
|
Geht afaik auch mit 2k.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 29.08.2007, 23:45 Titel: |
|
|
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 |
|
 |
surfer87
Anmeldungsdatum: 16.09.2004 Beiträge: 103
|
Verfasst am: 30.08.2007, 08:36 Titel: |
|
|
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 |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 30.08.2007, 08:43 Titel: |
|
|
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  _________________
 |
|
Nach oben |
|
 |
surfer87
Anmeldungsdatum: 16.09.2004 Beiträge: 103
|
Verfasst am: 30.08.2007, 09:03 Titel: |
|
|
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 |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 30.08.2007, 09:07 Titel: |
|
|
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 |
|
 |
surfer87
Anmeldungsdatum: 16.09.2004 Beiträge: 103
|
Verfasst am: 30.08.2007, 09:23 Titel: |
|
|
ah bestens das funktioniert soweit.
Danke sehr  |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 30.08.2007, 09:25 Titel: |
|
|
Also statt
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 ) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 30.08.2007, 17:39 Titel: |
|
|
@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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 30.08.2007, 17:42 Titel: |
|
|
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 |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 30.08.2007, 18:02 Titel: |
|
|
Hm, so ähnlich hat der Acrobat Reader das afaik bei Windosen unter 2k gemacht.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 30.08.2007, 18:16 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 30.08.2007, 18:21 Titel: |
|
|
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 |
|
 |
|