Didn't a lot of older paint programs (e.g. DP) use poly lines for drawing? They worked by drawing a line between old mouse pos and new mouse pos. I did a 2 minute test program and discovered that you can actually get "fat" turns if you draw slow enough with such a tool:
...but I think this can be remedied by keeping an eye at the velocity of the line (mouse delta) or by remembering 3 time points which must be separated by a certain distance, then doing a spline line or whatever. Should give very smooth lines. The three points suggest the intent of the line to some degree, something which is a bit harder to know if analyzing the pixels after they have been rasterized and you're doing image analysis. Also, no line crossing problems.
As someone who mainly does tiny sprites this is of little use to me however. Seems like it would be more useful for Fighter sprites and pixel art drawings.
Same primitive program as before but with much more delay between sample points:
Really fast lines becomes zigzaggy of course, but as mentioned above, this could be fixed.
With the pencil tool, Photoshop single-plots really rapidly it seems. Unsure if you can set it to drawing lines instead.
BlitzMax Sauce (added some comments):
Strict
AppTitle="Single buffer polyline"
SetGraphicsDriver GLMax2DDriver(), 0 ' Need GL for single buffer apparently.
Graphics 640, 480, 0, , 0 ' Main screen turn on.
SetClsColor 225,220,200 Cls
Global mx, my, myold, mxold, mbold
Repeat
mxold = mx
myold = my
mx = MouseX()
my = MouseY()
If MouseDown(1)
' If the line is not continuation of old one (click is fresh) then...
If mbold = False Then mxold = mx myold = my mbold = True ' ...lazily set old coords to new.
' Now draw a line using some kind of DDA I don't know the name of.
SetColor 20,40,40
DrawLine mxold,myold, mx,my
Else mbold = False EndIf ' No line.
If MouseDown(2) ' Eraser
SetColor 225,220,200
DrawOval mx-3,my-3,6,6
EndIf
glFlush ' Go GL pipes! (Draw.)
Delay 50 ' ...in millisecs, adjust to suit pleasant drawing tempo.
Until KeyHit(KEY_ESCAPE) Or AppTerminate()
' The
End
Another drawing. Obvious accuracy/tablet sensitivity problems drawing without zoom of course. (Flood fill in PS because I'm not writing a flood fill).