Now, just my two cents.
For me, the pixel values in the drawing methods should be considered as coordinates.
This means, without antialiasing that:
R.Initialize(120, 120, 125, 120)
c.drawRect(R, Colors.Blue, False, 1)
Should draw two lines 1 pixel wide, with a distance of 0 between the two lines, in fact overlapping.
R.Initialize(120, 120, 125, 121)
c.drawRect(R, Colors.Blue, False, 1)
Should draw two lines 1 pixel wide, with a distance of 1 between the two lines, in fact side by side.
R.Initialize(120, 120, 125, 122)
c.drawRect(R, Colors.Blue, False, 1)
Should draw two lines 1 pixel wide, in fact, with a distance of 2 between the two lines, in fact with a 1 pixel wide space between.
And of course the vertical lines wich are not distinct in the first two examples.
All this should be the same as if we draw the rectangle with four lines:
c.DrawLine(120, 120, 125, 120, Colors.Blue, 1)
c.DrawLine(125, 120, 125, 122, Colors.Blue, 1)
c.DrawLine(125, 122, 120, 122, Colors.Blue, 1)
c.DrawLine(120, 122, 120, 120, Colors.Blue, 1)
And this is what we get in B4A, where antialiasing is not active by default !!!
Still in B4A, with a Strokewidth of 2, there is anoter line on top of the y coodinates and one at the left of the x coodinates.
And with a Strokewidth of 2, there is one additional line on each side of the y and x coodrinates.
But then antialiasing puts some good and strange stuff on it.
When I draw a horizontal or vertical line with strokewidth of 1, should draw a linw with a thickness of 1 pixel and the color I set, even with antialiasing.
Not two lines with a lighter color.
But, anyway that's just my opinion and my wish.
B4A test, no antialiasing:
rctTest.Initialize(10, 500, 60, 500)
cvsMain.DrawRect(rctTest, Colors.Red, False, 1)
rctTest.Initialize(10, 520, 60, 521)
cvsMain.DrawRect(rctTest, Colors.Red, False, 1)
rctTest.Initialize(10, 540, 60, 542)
cvsMain.DrawRect(rctTest, Colors.Red, False, 1)
rctTest.Initialize(10, 560, 60, 563)
cvsMain.DrawRect(rctTest, Colors.Red, False, 1)
And the result.