Bug? Canvas draw line and textTransparent

rossati

Active Member
Licensed User
Longtime User
Hi

The draw line (and text) do not accept
Colors.Transparent
nor
ARGB (0,0,0,0)
. See image attached.
B4X:
    Dim Can As Canvas
    Can.Initialize(PanelMain)
    Can.DrawColor(Colors.White)
    Can.DrawLine(10dip,10dip,100dip,10dip,Colors.Transparent,2dip)
    Can.DrawLine(10dip,25dip,100dip,25dip,Colors.ARGB(0,0,0,0),2dip)
    Can.DrawLine(10dip,40dip,100dip,40dip,Colors.ARGB(0,0,0,1),2dip)
    Can.DrawLine(10dip,55dip,100dip,55dip,Colors.Black,2dip)
    Can.DrawText("Transparent",110dip, 10dip,Typeface.DEFAULT,12,Colors.Magenta,"LEFT")
    Can.DrawText("Black Transparent",110dip, 25dip,Typeface.DEFAULT,12,Colors.Magenta,"LEFT")
    Can.DrawText("Transparent",110dip, 40dip,Typeface.DEFAULT,12,Colors.Magenta,"LEFT")
    Can.DrawText("Not Transparent",110dip, 55dip,Typeface.DEFAULT,12,Colors.Magenta,"LEFT")
The work around is
Can.DrawLine(10dip,40dip,100dip,40dip,Colors.ARGB(0,0,0,1),2dip)
 

Attachments

  • transparent.png
    transparent.png
    23.6 KB · Views: 196

rossati

Active Member
Licensed User
Longtime User
I apologize my concision:

The Colors.transparent has no effect when applied to DrawLine (and DrawText).
You can see this in the image included: the first two lines they should have been invisible.
For obtain "transparence" I have used a user transparent color, like this:
Colors.ARGB(0,0,0,1)
.
 

Erel

B4X founder
Staff member
Licensed User
Longtime User
Seems to work as expected:

SS-2018-05-21_10.19.26.png


B4X:
Sub Activity_Create(FirstTime As Boolean)
   Activity.LoadLayout("1")
   Dim cvs As Canvas
   cvs.Initialize(Panel1)
   cvs.DrawColor(Colors.Red)
   cvs.DrawLine(0, 0, 100dip, 100dip, Colors.Transparent, 5dip)
   cvs.DrawText("XXX", 50dip, 50dip, Typeface.DEFAULT_BOLD, 40, Colors.Transparent, "CENTER")
   Panel1.Invalidate
End Sub
 

rossati

Active Member
Licensed User
Longtime User
thanks Erel
my be is a bug on version 7.01 or I am misunderstanding how Transparent works.
B4X:
    Dim Can As Canvas
    Can.Initialize(PanelMain)
    Can.DrawColor(Colors.White)
    Can.DrawLine(10dip,10dip,100dip,10dip,Colors.Transparent,2dip)
    Can.DrawLine(10dip,25dip,100dip,25dip,Colors.ARGB(0,0,0,0),2dip)
    Can.DrawLine(10dip,40dip,100dip,40dip,Colors.ARGB(0,0,0,255),2dip)
    Can.DrawLine(10dip,55dip,100dip,55dip,Colors.Black,2dip)
    Can.DrawText("Transparent",110dip, 10dip,Typeface.DEFAULT,12,Colors.Magenta,"LEFT")
    Can.DrawText("Black Transparent",110dip, 25dip,Typeface.DEFAULT,12,Colors.Magenta,"LEFT")
    Can.DrawText("Transparent",110dip, 40dip,Typeface.DEFAULT,12,Colors.Magenta,"LEFT")
    Can.DrawText("Not Transparent",110dip, 55dip,Typeface.DEFAULT,12,Colors.Magenta,"LEFT")
    Can.DrawLine(0, 0, 100dip, 100dip, Colors.Transparent, 5dip)
    Can.DrawText("XXX", 50dip, 50dip, Typeface.DEFAULT_BOLD, 40, Colors.Transparent, "CENTER")
upload_2018-5-21_9-59-28.png
 

rossati

Active Member
Licensed User
Longtime User
Thanks
I suppose full transparent is black Transparent, because
Can.DrawLine(10dip,40dip,100dip,40dip,Colors.ARGB(0,0,0,255),2dip)
works as I would.
 
Top