[Erledigt] CreateImage Farbe nachträglich wechseln

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

[Erledigt] CreateImage Farbe nachträglich wechseln

Beitrag von udg »

HAllo,
ich erstelle einen ExitButton mit folgendem Code:

Code: Alles auswählen

  CreateImage(#Btn_ExitDemo, 28, 28)
  StartDrawing(ImageOutput(#Btn_ExitDemo))
  FillArea(1, 1, -1, ColorPicker)
  Line(2, 25, 24, -24, $666667)
  Line(2, 2, 24, 24, $666667)
  StopDrawing()
  ImageGadget(#Img_BtnExitDemo, WindowWidth(#Main)-29, 1, 28, 28, ImageID(#Btn_ExitDemo))
Standardmäßig schaut das dann so aus:
Bild

Nun habe ich einen ColorRequester mit dem man die Fensterfarbe ändern kann. Funktioniert.


Aber die:

Code: Alles auswählen

ColorPicker = $F2F2F2 
 FillArea(1, 1, -1, ColorPicker)
bekomme ich einfach nicht mit geändert was die neue Farbe angeht.

Laut Hilfe kann man kein SetGadgetColor anwenden :(
und das Ergebnis schaut dann so aus:
Bild
wobei der Hintergrnd des "X" die altrote Farbe mit annehmen soll.


Die Procedure ColorRequester beinhaltet dann u.a. diesen Code:

Code: Alles auswählen

  If ChooseColor_(@CHOOSECOLOR)
    SetWindowColor(#Main, CHOOSECOLOR\rgbResult)
    SetGadgetColor(#Titel_DemoScreen, #PB_Gadget_BackColor, CHOOSECOLOR\rgbResult)
    ColorPicker = CHOOSECOLOR\rgbResult
  Else
und

Code: Alles auswählen

ColorPicker = CHOOSECOLOR\rgbResult
wird ignoriert.

Kennt jemand eine Lösung dafür?

Danke Euch
Zuletzt geändert von udg am 28.05.2018 11:17, 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! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: CreateImage Farbe nachträglich wechseln

Beitrag von ccode_new »

Hallo udg,

debug mal den Wert von “ColorPicker“ hier:

Code: Alles auswählen

ColorPicker = $F2F2F2 
FillArea(1, 1, -1, ColorPicker)
und hier:

Code: Alles auswählen

If ChooseColor_(@CHOOSECOLOR)
    SetWindowColor(#Main, CHOOSECOLOR\rgbResult)
    SetGadgetColor(#Titel_DemoScreen, #PB_Gadget_BackColor, CHOOSECOLOR\rgbResult)
    ColorPicker = CHOOSECOLOR\rgbResult
  Else
Kann es am Wertebereich liegen ?
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
chi
Beiträge: 90
Registriert: 17.05.2007 09:30
Wohnort: Linz - Austria

Re: CreateImage Farbe nachträglich wechseln

Beitrag von chi »

Wenn du das Image in 32-bit erstellst und den Hintergrund transparent lässt, dann brauchst du dich um die Hintergrundfarbe danach nicht mehr zu kümmern ;)

Code: Alles auswählen

OpenWindow(0, 0, 0, 150, 150, "", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)

CreateImage(0, 28, 28, 32, #PB_Image_Transparent)
StartDrawing(ImageOutput(0))
DrawingMode(#PB_2DDrawing_AlphaBlend)
Line(2, 25, 24, -24, RGBA(103, 102, 102, 255))
Line(2, 2, 24, 24, RGBA(103, 102, 102, 255))
StopDrawing()

ImageGadget(0, 60, 60, 0, 0, ImageID(0))

SetWindowColor(0, RGB(Random(255), Random(255), Random(255)))

While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
Benutzeravatar
udg
Beiträge: 560
Registriert: 20.06.2013 23:27

Re: CreateImage Farbe nachträglich wechseln

Beitrag von udg »

@chi

danke, es war etwas tricky, da ich das ganze in einem DX screen darstellen muss. Mit 32bit transparent ging es leider nicht, dann blieb das Kästchen einfach schwarz oder mein Programm ging einfach wieder zu :S

Ich habe es aber nun mit Variablen hinbekommen. Danke an Bisonte ;)

Und danke an alle für die Tipps.
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! TOP. Kauft Eure Hardware gern bei ihm.
Monitor:
LG 38GL950G-B 95 (38 Zoll) Ultragear Curved 21: 9 UltraWide QHD IPS
Antworten