Seite 1 von 1

[Erledigt] CreateImage Farbe nachträglich wechseln

Verfasst: 26.05.2018 00:18
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

Re: CreateImage Farbe nachträglich wechseln

Verfasst: 26.05.2018 06:45
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 ?

Re: CreateImage Farbe nachträglich wechseln

Verfasst: 26.05.2018 14:52
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

Re: CreateImage Farbe nachträglich wechseln

Verfasst: 28.05.2018 11:07
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.