Platforms to show: All Mac Windows Linux Cross-Platform
FAQ.How to draw a nice antialiased line?
Feedback.
Answer:
This code can help you althrough it's not perfect.
You need to set lc to the current color you use.
Example:
Feedback.
Answer:
This code can help you althrough it's not perfect.
You need to set lc to the current color you use.
Example:
Sub drawLine(xs as integer, ys as integer, xe as integer, ye as integer, face as RGBSurface, lineColor as color)
dim intX, intY, count, n, xDiff, yDiff as integer
dim v, v1, floatX, floatY, xx, yy, xStep, yStep as double
dim c as color
const st=1.0
xDiff=xe-xs
yDiff=ye-ys
count=max(abs(xDiff), abs(yDiff))
xStep=xDiff/count
yStep=yDiff/count
xx=xs
yy=ys
for n=1 to count
intX=xx
intY=yy
floatX=xx-intX
floatY=yy-intY
v=(1-floatX)*(1-floatY)*st
v1=1-v
c=face.pixel(intX, intY)
face.pixel(intX, intY)=rgb(v*lineColor.red+v1*c.red, v*lineColor.green+v1*c.green, v*lineColor.blue+v1*c.blue)
v=floatX*(1-floatY)*st
v1=1-v
c=face.pixel(intX+1, intY)
face.pixel(intX+1, intY)=rgb(v*lineColor.red+v1*c.red, v*lineColor.green+v1*c.green, v*lineColor.blue+v1*c.blue)
v=(1-floatX)*floatY*st
v1=1-v
c=face.pixel(intX, intY+1)
face.pixel(intX, intY+1)=rgb(v*lineColor.red+v1*c.red, v*lineColor.green+v1*c.green, v*lineColor.blue+v1*c.blue)
v=floatX*floatY*st
v1=1-v
c=face.pixel(intX+1, intY+1)
face.pixel(intX+1, intY+1)=rgb(v*lineColor.red+v1*c.red, v*lineColor.green+v1*c.green, v*lineColor.blue+v1*c.blue)
xx=xx+xStep
yy=yy+yStep
next
End Sub
Notes: PS: st should be 1 and face should be a RGBSurface or a Graphics object.Links
MBS Realbasic Chart Plugins - Nachhilfe in Kruft