Needed a SUB to draw boxes with rounded corners, filled or unfilled. Here's what came out of it. You can control the amount of corner rounded-ness by giving a radius value. I made a smaller one using the filled circle routine (circle for each corner), but it only could do filled boxes, so used arc routines to draw them. Probably someone has a better method to do this, just thought I'd throw mine into the mix.
- Dav
EDIT: Code fixed!
- Dav
EDIT: Code fixed!
Code: (Select All)
'======== 'RBOX.BAS '======== 'Draws a box with rounded corners, filled or unfilled. 'Coded by Dav, SEP/2024 Randomize Timer Screen _NewImage(1000, 700, 32) 'this demo draws random boxes with round corners... Do x1 = Int(Rnd * _Width): x2 = x1 + 120 + Int(Rnd * 100) y1 = Int(Rnd * _Height): y2 = y1 + 120 + Int(Rnd * 100) radius = 20 + Int(Rnd * 30) Rbox x1, y1, x2, y2, radius, _RGB(Rnd * 255, Rnd * 255, Rnd * 255), Int(Rnd * 2) _Limit 30 Loop Until InKey$ <> "" End Sub Rbox (x1, y1, x2, y2, r, clr&, fill) 'x1/y1, y1/y2 = placement of box 'r = radius of rounded corner 'clr& = color of box 'fill = 1 for filled, 0 for just an edge If fill = 1 Then Line (x1, y1 + r)-(x2, y2 - r), clr&, BF 'middle Line (x1 + r, y1)-(x2 - r, y2), clr&, BF '(ditto) Else Line (x1 + r, y1)-(x2 - r, y1), clr& 'top Line (x1 + r, y2)-(x2 - r, y2), clr& 'bottom Line (x1, y1 + r)-(x1, y2 - r), clr& 'left Line (x2, y1 + r)-(x2, y2 - r), clr& 'right End If 'top left corner arc For angle = 180 To 270 x3 = (x1 + r) + r * Cos(_D2R(angle)) y3 = (y1 + r) + r * Sin(_D2R(angle)) If fill = 1 Then Line (x3 + r, y3 + r)-(x3, y3), clr&, BF Else PSet (x3, y3), clr& End If Next 'top right corner arc For angle = 270 To 360 x3 = (x2 - r) + r * Cos(_D2R(angle)) y3 = (y1 + r) + r * Sin(_D2R(angle)) If fill = 1 Then Line (x2 - r, y1 + r)-(x3, y3), clr&, BF Else PSet (x3, y3), clr& End If Next 'bottom left corner arc For angle = 90 To 180 x3 = (x1 + r) + r * Cos(_D2R(angle)) y3 = (y2 - r) + r * Sin(_D2R(angle)) If fill = 1 Then Line (x1 + r, y2 - r)-(x3, y3), clr&, BF Else PSet (x3, y3), clr& End If Next 'bottom right corner For angle = 0 To 90 x3 = (x2 - r) + r * Cos(_D2R(angle)) y3 = (y2 - r) + r * Sin(_D2R(angle)) If fill = 1 Then Line (x2 - r, y2 - r)-(x3, y3), clr&, BF Else PSet (x3, y3), clr& End If Next End Sub