(Erledigt)Fenster mit durchsichtigen Stellen.

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

(Erledigt)Fenster mit durchsichtigen Stellen.

Beitrag von tft »

Hallo,
hier wider ein frage, bei deren Formulierung ich wider mal an meine Grenzen stosse.

Für meine BlackDesertOnline KI, möchte ich auf dem BDO Fenster eine Sprechblase erscheinen lassen oder Icons und Buttons.
Ein Weg währe, den Hintergrund zu grabben und einfach auf ein Canvas zu Kopieren und dann mit den PB Mitteln die Transparenz
vorzutäuschen. Leider fällt der Trick auf wenn das BDO Fenster verschoben wird. Es ist zwar möglich die Fenster neu zu positionieren.
Das verursacht aber ein sehr blödes flickern und flackern.
Eine meiner Grundsätze beim entwickeln dieser KI ist, das ich keine eingriff in den Client oder den Datentransfer nehmen werde. Auch
das Manipulieren der Fenster selber kommt nicht in frage.

Daher suche ich eine Möglichkeit mit Windows API Mitteln eine Transparenz zu erzeugen. Wobei mir ein nicht zeichnen aller Pixel die RGB 0
eigentlich reicht. Es gibt einige Games die beim Start ein logo oder einen Lancher anzeigen dessen verschnörkelte Kontur den Hintergrund
anzeigt.

Bild

Das Bild oben zeigt mein Icon vom AnimePlayer. Der Hintergrund scheint durch. So möchte ich es bei meinem Fenster haben.

Also .. alle Ideen sind willkommen.

MfG Temucin alias TFT
Zuletzt geändert von tft am 24.12.2017 18:22, insgesamt 1-mal geändert.
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: Fenster mit durchsichtigen Stellen.

Beitrag von ccode_new »

Hallo tft,

ich kenne mich mit Windows-Skins nicht so aus, aber vielleicht hilft das hier:

http://www.purebasic.fr/english/viewtop ... 12&t=45811

Vielleicht findest du auch hier noch etwas brauchbares: http://www.rsbasic.de/winapi-library/ (OpenWindow)

Unter Java könntest du mit:

java.awt.geom.Ellipse2D;
java.awt.geom.GeneralPath;
...

experimentieren.

Bsp:

Code: Alles auswählen

package javaapplication1;

/**
 *
 * @author ccode_new
 */
import javax.swing.*;
import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;

public class JavaApplication1 extends JFrame {
    public JavaApplication1() {
        super();

        setUndecorated(true);

        setSize(new Dimension(300, 300));
        
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        Ellipse2D.Double theCircle = new Ellipse2D.Double(0, 0, 300, 300);
        
        Polygon polygon = new Polygon();
        polygon.addPoint(0, 0);
        polygon.addPoint(150, 150);
        polygon.addPoint(0, 300);

        GeneralPath path = new GeneralPath();
        
        path.append(theCircle, true);
        path.append(polygon, true);

        setShape(path);
        
        getContentPane().setBackground(Color.yellow);

        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable(){
            @Override
            public void run() {
                GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

                if (ge.getDefaultScreenDevice().isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT)) {
                    new JavaApplication1();
                }
            }
        });
    }
}

Aber wir sind hier ja bei PureBasic.

Mmmh...
Sicherlich haben hier noch andere Leute bessere Windows-Freiform-Design-Tipps.

Oder aber du meinst etwas ganz anderes und ich liege hier komplett falsch ?
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Fenster mit durchsichtigen Stellen.

Beitrag von Andesdaf »

hilft das?

Code: Alles auswählen

OpenWindow(0, 0, 0, 110, 110, "Test", #PB_Window_BorderLess | #PB_Window_ScreenCentered)

StartDrawing(WindowOutput(0))
Box(0, 0, 110, 110, RGB(0, 255, 0))
Circle(50, 50, 25, RGB(255, 0, 0))
StopDrawing()

SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0),#GWL_EXSTYLE)|#WS_EX_LAYERED)
SetLayeredWindowAttributes_(WindowID(0), RGB(0, 255, 0), 0, #LWA_COLORKEY)

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Win11 x64 | PB 6.00 (x64)
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: Fenster mit durchsichtigen Stellen.

Beitrag von tft »

Hallo .... das ist exakt das was ich gesucht habe .... danke und schöne Fresttage

Gruss Temucin alias TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
juergenkulow
Beiträge: 188
Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten

Re: (Erledigt)Fenster mit durchsichtigen Stellen.

Beitrag von juergenkulow »

Code: Alles auswählen

; Jede ms einen Circle 
Bildschirm=ExamineDesktops()-1
Fenster=OpenWindow(#PB_Any, DesktopX(Bildschirm), DesktopY(Bildschirm), DesktopWidth(Bildschirm),
                   DesktopHeight(Bildschirm), "", #PB_Window_BorderLess )
StartDrawing(WindowOutput(Fenster))
Box(0,0,DesktopWidth(Bildschirm), DesktopHeight(Bildschirm), RGBA(0, 0 , 0,255))
SetWindowLong_(WindowID(Fenster), #GWL_EXSTYLE, GetWindowLong_(WindowID(Fenster),#GWL_EXSTYLE)|#WS_EX_LAYERED)
SetLayeredWindowAttributes_(WindowID(Fenster), RGBA(0, 0, 0,255), 0, #LWA_COLORKEY)
Repeat 
  Circle(Random(DesktopWidth(Bildschirm)), Random(DesktopHeight(Bildschirm)-500)+400,Random(40)+10,
        RGB(Random($f)*$10+1,0,0)) 
Until WaitWindowEvent(1) = #PB_Event_CloseWindow
StopDrawing()
Bitte stelle Deine Fragen, denn den Erkenntnisapparat einschalten entscheidet über das einzig bekannte Leben im Universum.

Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: (Erledigt)Fenster mit durchsichtigen Stellen.

Beitrag von tft »

Hallo,

der ist geil ...... hab ich mich erschrocken. Ich habe einen BackFlash bekommen. Vor 25 Jahren hat ein Virus auf dem AMIGA sowas gemacht.

NICE ....

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Antworten