[erledigt] s. übersetzer f. Code transparentes PNG Fenster

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

[erledigt] s. übersetzer f. Code transparentes PNG Fenster

Beitrag von udg »

Hallo,

dieser Code funktioniert in PB 5.30 wie er soll.
nun arbeite ich jedoch mit der v4.61

wäre jemand so nett mir diesen für die v4.61 anzupassen? Mein bisheriger PNG Code für solche Sachen ist um Ellen länger und spielt sich immer in 2 Fenstern ab: Child + Parent

Danke für Hilfe

Code: Alles auswählen

UsePNGImageDecoder()

DataSection
        Interface: ; bezeichnet das sprite im speicher
IncludeBinary "interface_test.png" ; Lade ein PNG mit Alphatransparenz
        Interface_End: ; bezeichnet das sprite im speicher
EndDataSection 

Define pic_1 = CatchImage(#PB_Any, ?Interface, ?Interface_End - ?Interface)  ; Hintergrund Bild aus dem Speicher laden

OpenWindow(0, 0, 0, ImageWidth(pic_1), ImageHeight(pic_1), "", #PB_Window_ScreenCentered)
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) |

#WS_EX_LAYERED)
hDC = StartDrawing(ImageOutput(pic_1))
  GetObject_(ImageID(pic_1), SizeOf(BITMAP), @BitmapInfo.BITMAP)
  ContextOffset.POINT
  BlendMode.BLENDFUNCTION
  BlendMode\SourceConstantAlpha = 255
  BlendMode\AlphaFormat = 1
  UpdateLayeredWindow_(WindowID(0), 0, 0, @BitmapInfo+4, hDC, @ContextOffset, 0,

@BlendMode, 2)
StopDrawing()

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
  EndSelect
  
;////////////////////////////////////////
;-Fenster mit Maus verschieben
SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
;////////////////////////////////////////
ForEver
Zuletzt geändert von udg am 02.10.2014 03:52, insgesamt 1-mal geändert.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: suche übersetzer für Code transparentes PNG

Beitrag von NicTheQuick »

Ich denke es liegt an dem Label "Interface", weil das ein Schlüsselwort ist, was vom Compiler für Interfaces benutzt wird.
Seit V5.00+ irgendwann kam wieder eine Änderung wegen Doppelpunkten, sodass es ab da wieder funktioniert.

Ungetestet:

Code: Alles auswählen

 UsePNGImageDecoder()

DataSection
        Label_Interface: ; bezeichnet das sprite im speicher
IncludeBinary "interface_test.png" ; Lade ein PNG mit Alphatransparenz
        Label_Interface_End: ; bezeichnet das sprite im speicher
EndDataSection

Define pic_1 = CatchImage(#PB_Any, ?Label_Interface, ?Label_Interface_End - ?Label_Interface)  ; Hintergrund Bild aus dem Speicher laden

OpenWindow(0, 0, 0, ImageWidth(pic_1), ImageHeight(pic_1), "", #PB_Window_ScreenCentered)
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) |

#WS_EX_LAYERED)
hDC = StartDrawing(ImageOutput(pic_1))
  GetObject_(ImageID(pic_1), SizeOf(BITMAP), @BitmapInfo.BITMAP)
  ContextOffset.POINT
  BlendMode.BLENDFUNCTION
  BlendMode\SourceConstantAlpha = 255
  BlendMode\AlphaFormat = 1
  UpdateLayeredWindow_(WindowID(0), 0, 0, @BitmapInfo+4, hDC, @ContextOffset, 0,

@BlendMode, 2)
StopDrawing()

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
  EndSelect
 
;////////////////////////////////////////
;-Fenster mit Maus verschieben
SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
;////////////////////////////////////////
ForEver 
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: suche übersetzer für Code transparentes PNG

Beitrag von udg »

Danke Dir :)

leider funktioniert es nicht. PB meckert hier rum:
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) |

Syntax error

Ich denke mir mal, dass PB4.61 diesen Befehl nicht kennt: SetWindowLong_ ?

Grüße

EDIT:

Habe es hinbekommen. Läuft nun unter PB 4.61

Code: Alles auswählen

UsePNGImageDecoder()

DataSection
        Label_Interface: ; bezeichnet das sprite im speicher
IncludeBinary "interface_test.png" ; Lade ein PNG mit Alphatransparenz
        Label_Interface_End: ; bezeichnet das sprite im speicher
EndDataSection


Define pic_1 = CatchImage(#PB_Any, ?Label_Interface, ?Label_Interface_End - ?Label_Interface)  ; Hintergrund Bild aus dem Speicher laden

OpenWindow(0, 0, 0, ImageWidth(pic_1), ImageHeight(pic_1), "", #PB_Window_ScreenCentered)
SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) |#WS_EX_LAYERED)

hDC = StartDrawing(ImageOutput(pic_1))
  GetObject_(ImageID(pic_1), SizeOf(BITMAP), @BitmapInfo.BITMAP)
  ContextOffset.POINT
  BlendMode.BLENDFUNCTION
  BlendMode\SourceConstantAlpha = 255
  BlendMode\AlphaFormat = 1
  UpdateLayeredWindow_(WindowID(0), 0, 0, @BitmapInfo+4, hDC, @ContextOffset, 0, @BlendMode, 2)
  
  StopDrawing()

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
  EndSelect
 
;////////////////////////////////////////
;-Fenster mit Maus verschieben
SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
;////////////////////////////////////////
ForEver
Zuletzt geändert von udg am 02.10.2014 03:45, insgesamt 1-mal geändert.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: suche übersetzer für Code transparentes PNG

Beitrag von STARGÅTE »

Nö, aber du hast da n Zeilenumbruch drin der nicht sein darf, denn hinterm dem | fehlt ja das aus der nächsten Zeile:

Code: Alles auswählen

SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) |

#WS_EX_LAYERED)
besser:

Code: Alles auswählen

SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) | #WS_EX_LAYERED)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: suche übersetzer für Code transparentes PNG

Beitrag von udg »

jo , habs schon bemerkt und korrigiert.

Code: Alles auswählen

UpdateLayeredWindow_(WindowID(0), 0, 0, @BitmapInfo+4, hDC, @ContextOffset, 0,

@BlendMode, 2)
war auch falsch

muss:

Code: Alles auswählen

UpdateLayeredWindow_(WindowID(0), 0, 0, @BitmapInfo+4, hDC, @ContextOffset, 0, @BlendMode, 2)
danke

schon interessant, dass PB 5.30 das so annimmt mit den unvollständigen Codezeilen
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: suche übersetzer für Code transparentes PNG

Beitrag von Bisonte »

udg hat geschrieben:... schon interessant, dass PB 5.30 das so annimmt mit den unvollständigen Codezeilen...
PB 5.10 - History hat geschrieben:- Hinzugefügt: Zeilenfortsetzungs-Funktion, mit folgenden Operanden: ',' '|' '+' And Or XOr
It's not a bug... it's a feature ;)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [erledigt] s. übersetzer f. Code transparentes PNG Fenst

Beitrag von RSBasic »

STARGÅTE hat geschrieben:besser:

Code: Alles auswählen

SetWindowLong_(WindowID(0), #GWL_EXSTYLE, GetWindowLong_(WindowID(0), #GWL_EXSTYLE) | #WS_EX_LAYERED)
Noch besser:

Code: Alles auswählen

SetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE, GetWindowLongPtr_(WindowID(0), #GWL_EXSTYLE) | #WS_EX_LAYERED)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: [erledigt] s. übersetzer f. Code transparentes PNG Fenst

Beitrag von udg »

Ich bin froh, dass ich halbwegs was zu Stande bekomm mit Version 4.61. Das Problem für mich ist, dass sich mit jeder neuen Version etwas ändert (nicht schlimm und gut) und verändert oder ersetzt/ weggelassen wird, somit ältere Befehle nicht mehr unterstützt werden oder Codezeilen komplett umgeschrieben werden müssen :/

Für mich als Nicht Pro, schwierig. Darum verharre ich in meiner v4.61

gruß
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: [erledigt] s. übersetzer f. Code transparentes PNG Fenst

Beitrag von ts-soft »

Dafür gibt es doch jetzt LTS Versionen. Vielleicht doch mal die 5.2x LTS probieren, da ist der Support länger garantiert
(keine Syntax-Änderungen, keine neue Funktionen nur Fehlerbereinigung).

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
udg
Beiträge: 566
Registriert: 20.06.2013 23:27

Re: [erledigt] s. übersetzer f. Code transparentes PNG Fenst

Beitrag von udg »

okay danke. lade ich gleich mal runter, sind ja so viele Versionen verfügbar.
PB v5.43 LTS + v6.02 LTS | Windows 7 x86 + 11 x64 - Gforce RTX 4090 - AMD Ryzen 9 5900X 12-Core Processor 4.2 GHz - 64,0 GB RAM,
ASUSTEK TUF Gaming X570 Plus
ASUS ROG Thor-1200P Platinum (1200W, Aura Sync, OLED Display, 0dB-Cooling)
1x 1 TByte Samsung MZ-V7S500BW 970 EVO Plus 1 TB NVMe M.2 Internal SSD
1x 2 TByte Samsung MZ-V7S2T0BW 970 EVO Plus 2 TB NVMe M.2 Internal SSD
von BiSONTE!. Kauft Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Antworten