2DDrawing: Alphaimage in PB4.51
Verfasst: 17.09.2010 00:56
Hallo, nach langer Zeit melde ich mal wieder...
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:
Ist der Code einigermaßen "sauber"
, oder ist da irgendwo des Guten zu viel oder im Ansatz falsch verstanden/programmiert worden?
Dankesgruß
Häns
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