Halbtransparenten Farbverlauf auf Bild legen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1118
Registriert: 10.05.2005 22:48

Halbtransparenten Farbverlauf auf Bild legen

Beitrag von Delle »

Hallo,

ich möchte auf ein Foto (.jpg) einen generierten Farbverlauf legen und es wieder abspeichern.

Beispiel: vertikaler Farbverlauf, oben transparent, ganz unten 100% weiß.

Geht das mit den nativen Befehlen oder muss GDI her?

Ich werd hier nicht ganz schlau draus: https://www.purebasic.com/documentation ... gmode.html

Danke!
PB 6.02 LTS + Win 11
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Halbtransparenten Farbverlauf auf Bild legen

Beitrag von STARGÅTE »

Klar das geht mit den Drawing2D Befehlen:

Code: Alles auswählen

Enumeration
	#Window
	#Gadget1
	#Gadget2
	#Gadget3
	#Image1
	#Image2
	#Image3
EndEnumeration


; Irgendein Foto
If CreateImage(#Image1, 200, 200, 32)
	If StartDrawing(ImageOutput(#Image1))
		Box(0,0,100,100,$FF0000)
		Box(100,0,100,100,$00FF00)
		Box(0,100,100,100,$0000FF)
		Box(100,100,100,100,$00FFFF)
		StopDrawing()
	EndIf
EndIf

; Irgendein Farbverlauf mit Transparenz
If CreateImage(#Image2, 200, 200, 32, #PB_Image_Transparent)
	If StartDrawing(ImageOutput(#Image2))
		DrawingMode(#PB_2DDrawing_AllChannels|#PB_2DDrawing_Gradient)
		LinearGradient(0,0,0,199)
		GradientColor(0.0, $00FFFFFF)
		GradientColor(1.0, $FFFFFFFF)
		Box(0,0,200,200)
		StopDrawing()
	EndIf
EndIf

; Überlagerung beider Bilder
If CreateImage(#Image3, 200, 200, 32, #PB_Image_Transparent)
	If StartDrawing(ImageOutput(#Image3))
		DrawingMode(#PB_2DDrawing_AlphaBlend)
		DrawAlphaImage(ImageID(#Image1), 0, 0) ; Irgendein Foto
		DrawAlphaImage(ImageID(#Image2), 0, 0) ; Irgendein Farbverlauf
		StopDrawing()
	EndIf
EndIf


OpenWindow(#Window, 0, 0, 800, 300, "Vector Canvas Gadget", #PB_Window_MaximizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
ImageGadget(#Gadget1, 50, 50, 200, 200, ImageID(#Image1))
ImageGadget(#Gadget2, 300, 50, 200, 200, ImageID(#Image2))
ImageGadget(#Gadget3, 550, 50, 200, 200, ImageID(#Image3))

Repeat
	Select WaitWindowEvent()
		Case #PB_Event_CloseWindow
			Break
	EndSelect
ForEver

End
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
Delle
Beiträge: 1118
Registriert: 10.05.2005 22:48

Re: Halbtransparenten Farbverlauf auf Bild legen

Beitrag von Delle »

Geilomat! Vielen Dank! War also "ungefähr" auf dem richtigen Weg, glaube aber allein hätte ich das nicht hinbekommen.
PB 6.02 LTS + Win 11
Antworten