Ich sitze z.Zt. am Projekt "Zeitschiene", in der -ähnlich wie beim EPG (Electronic Programming Guide)- auf Zeitschlitzen Balken verschiedener Länge mit Informationen dargestellt werden. Sie sollen auch bei bestimmten Situationen ihre Transparenz ändern. Da ich absoluter Beginner in Sache 2DDrawing und Alphakanal bin, möchte ich euch um Verbesserungsvorschläge bitten:
Code: Alles auswählen
;Test mit Alphakanal unter PB4.51
;dient nur zur Veranschaulichung und zum Testen
;DrawLBText aus PureBasic-Forum von TomS
Procedure DrawLBText(width, text.s)
line.s=""
y=20
x=15
k = CountString(text," ")
For loop = 1 To k
If TextWidth(line + StringField(text,loop," "))<width
line = line + StringField(text,loop," ")+" "
Else
DrawText(x,y,line,$FFFFFF)
y+20
line=StringField(text,loop," ")+" "
EndIf
Next
line = line + StringField(text,loop," ")+" "
DrawText(x,y,line,$FFFFFF)
EndProcedure
If OpenWindow(0, 0, 0, 800, 600, "2DDrawing Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateImage(0, 800, 600) And StartDrawing(ImageOutput(0))
Box(0, 0, 800, 600, RGB(255, 255, 255))
For x = 10 To 760 Step 50
Line(x, 20, 1, 550, RGB(200, 200, 200))
Next
StopDrawing()
ImageGadget(0, 0, 0, 0,0, ImageID(0))
EndIf
If CreateImage(1, 300, 120,32) And StartDrawing(ImageOutput(1))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0, 0, 300, 120, $000000)
DrawingMode(#PB_2DDrawing_AlphaBlend)
RoundBox(0, 0, 300, 120, 20, 20,RGBA(0, 0, 0, 155))
DrawingMode(#PB_2DDrawing_Gradient)
BackColor($B7C4FE)
FrontColor($1944FA)
LinearGradient(90, 10, 90, 40)
RoundBox(0, 0, 300, 120, 20, 20)
; DrawAlphaImage(ImageID(1), 0, 0) ??
DrawingMode(#PB_2DDrawing_Transparent)
DrawLBText(220,"10:00 - 12:00 Uhr Irgendeine tolle Sendung Nummer auf Pro8 oder wo war das?")
StopDrawing()
ImageGadget(1, 100, 130, 0,0, ImageID(1))
EndIf
If CreateImage(2, 600, 100,32) And StartDrawing(ImageOutput(2))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0, 0, 600, 100, $000000)
DrawingMode(#PB_2DDrawing_AlphaBlend)
RoundBox(0, 0, 600, 100, 20, 20,RGBA(0, 0, 0, 128))
DrawingMode(#PB_2DDrawing_Gradient)
BackColor($A1FE9B)
FrontColor($00FF00)
LinearGradient(90, 10, 90, 40)
RoundBox(0, 0, 600, 100, 20, 20)
; DrawAlphaImage(ImageID(2), 0, 0)
DrawingMode(#PB_2DDrawing_Transparent)
DrawLBText(420,"14:00 - 18:00 Uhr Sendung xy-aufgeklärt nicht verpassen!")
StopDrawing()
ImageGadget(2, 100, 300, 100,100, ImageID(2))
EndIf
If CreateImage(3, 200, 100,32) And StartDrawing(ImageOutput(3))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0, 0, 200, 100, $000000)
DrawingMode(#PB_2DDrawing_AlphaBlend)
RoundBox(0, 0, 200, 100, 20, 20,RGBA(0, 0, 0, 255))
DrawingMode(#PB_2DDrawing_Gradient)
BackColor($FEACAC)
FrontColor($FF0000)
LinearGradient(90, 10, 90, 40)
RoundBox(0, 0, 200, 100, 20, 20)
; DrawAlphaImage(ImageID(3), 0, 0)
DrawingMode(#PB_2DDrawing_Transparent)
DrawLBText(220,"20:00 - 20:15 Uhr Tagesschau gucken!")
StopDrawing()
ImageGadget(3, 100, 450, 100,100, ImageID(3))
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIfDankesgruß
Häns