これでできます。
何をしているか簡単に言えば 指定サイズの円を隙間なく線上に描画しているのです。
#define mmousex ginfo(0)-(ginfo(4)+(ginfo(10)-ginfo(12))/2)
#define mmousey ginfo(1)-(ginfo(5)+(ginfo(11)-ginfo(13))-(ginfo(10)-ginfo(12))/2)
#module
#deffunc LineEx int mx,int my,int omx,int omy,int pen
if mx-omx!0{
if abs(1.0*(my-omy)/(mx-omx))>=1{
ly=my:lx=mx:sy=omy:sx=omx
if my<omy:ly=omy:lx=omx:sy=my:sx=mx
while(flag=0)
circle sx+1.0*(y*(mx-omx)/(my-omy))-pen/2,sy+y-pen/2,sx+1.0*(y*(mx-omx)/(my-omy))-pen/2+pen,sy+y-pen/2+pen,1
y+
if y>=ly-sy:y=0:flag=1
wend
flag=0
}else{
ly=my:lx=mx:sy=omy:sx=omx
if mx<omx:ly=omy:lx=omx:sy=my:sx=mx
while(flag=0)
circle sx+x-pen/2,sy+1.0*(x*(my-omy)/(mx-omx))-pen/2,sx+x-pen/2+pen,sy+1.0*(x*(my-omy)/(mx-omx))-pen/2+pen,1
x+
if x>=lx-sx:x=0:flag=1
wend
flag=0
}}else{
ly=my:lx=mx:sy=omy:sx=omx
if my<omy:ly=omy:lx=omx:sy=my:sx=mx
while(flag=0)
circle sx+1.0*(y*(mx-omx)/(my-omy))-pen/2,sy+y-pen/2,sx+1.0*(y*(mx-omx)/(my-omy))-pen/2+pen,sy+y-pen/2+pen,1
y+
if y>=ly-sy:y=0:flag=1
wend
flag=0
}
return
#global
*main
//mmousex mmousey 画面内外のマウス位置を求める
//LineEx x,y,x,y,ペンサイズ
pen=7
mx=mmousex: my=mmousey
okey=key: stick key,256,1
if (mx>=30 and mx<=270)and(my>=30 and my<=270) { if key==256 {
if (omx!=mx || omy!=my) {
if okey==key {
color red,green,bleu
LineEx mx,my,omx,omy,pen
}}}}
redraw 1
wait 1
redraw 0
omx=mx: omy=my
goto *main