The line object, and canvas object "draw line" work the same. (x1,y1,x2,y2).
The only difference is line uses window coordinates, and canvas uses its dimensions.
Thing is there is no way to get correct collision detection with line, but you can with canvas.
As far as primitives go there's no way to fill in either case. Also Python cant draw directly to the Construct window, you can only make calls to Construct objects, like sprite.
Sprite BTW can make filled primitives out of a distort map, but there's no collision detection on it, unless you paste it into a canvas.