The general confusion is that the android graphics geometry is center- 
line based, and consistent at all matrix transformations, while J2ME  
linedrawing is more "pen" based.

As an example, when android draws a line, it basically constructs a  
rectangle about the line, by moving parallel to the line by 1/2 the  
strokeWidth. If there is no fancy Join (e.g. Square or Round), no  
outset is performed on the line's ends. So for the line (0,0) (0,2),  
it constructs the rectangle

// assuming the strokeWidth is 1.0
     left = 0
     top = -1/2
     right = 2
     bottom = 1/2

and then tries to fill the rectangle, using the standard of rounding  
each coordinate to an int via (int)(coord + 0.5) // for positive coords

That said, in your example, the strokeWidth is 0, which is a special  
value meaning hairline. This is pretty close to 1.0, but will draw  
slightly differently at times, but much faster. (aside: hairline  
stroking always draws 1-pixel wide, regardless of the matrix on the  
canvas).

Stroking rectangles in hairline mode does a little extra work to be  
nice to try to hit all of the corners, even if the normal hairline  
drawLine path would have missed it.

But back to center-line geometry. The upshot really is, if you want to  
trivially predict what pixels will be hit for stroking, put your  
geometry on 1/2 pixel boundaries. Then when I outset by 1/2 the  
strokeWidth, the center-line pixel will always get hit.

mike

On Sep 11, 2008, at 9:12 AM, sahn0 wrote:


Yes, p is Paint object set up as follows:

Paint p=new Paint();
p.setColor(0xFF800000);
p.setStyle(Paint.Style.STROKE);

Style.STROKE is needed for drawRect to actually draw rect, issue with
right-bottom pixel shows itself independently of Style.

On 11 сент, 19:48, Mike Reed <[EMAIL PROTECTED]> wrote:
> Might be a bug. Can you put a more complete code snippet (including
> how the paint (p) was setup) into the bug?
>
> thanks,
> mike




--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to