But how to generate (quickly) such objects randomly so that size, form, rotation and the outline never looks the same? Just found Blob Maker which could also be a start...
The second code is a quick approach but doesn't look very promising so I hope, other tactics will show better results.
Code: Select all
CompilerIf #PB_Compiler_Version>555:Macro Base64Decoder(a,b,c,d):Base64DecoderBuffer(a,b,c,d):EndMacro:CompilerEndIf
M=?E-?S:R=AllocateMemory(M):If R:B=Base64Decoder(?S,M,R,M):Z=5524:If B:X=AllocateMemory(Z):F.s=SaveFileRequester("Save file","Gattopardo.svg","All files (*.*)|*.*",0):If F And UseLZMAPacker() And UncompressMemory(R,B,X,Z)=Z:CreateFile(0,F):WriteData(0,X,Z):EndIf:EndIf:EndIf
DataSection
S:
!db 'XQAAAAIAHg/LhxHYzmaRD4Meyv17M9R/6bfaKDF2JWYgTSoJbWr3KXA4MOfMHdsZJpIjXEI1M6azc0wZGEpmHph4iaHl/aOqVn0MDkeXPM43r3epBTU6cWP90tsBuIvShgX1hBJwysrwqvO1DPJMNvJPd9GDwIgWy2/6BhnBbrTKAB71yYPXi8NO9SUxjrn4bh+YNO0JPwRJIv0SuZcHxNp/+AKG123S4BxYofOo19PbIZ4B8qBmYZRu9Eo65Q7C'
!db 'yX8xbhaWoSgovnR0Rh2dVKdEUDhQjmJBJmzSU/Ysa1k282zzSO1hiqUeCR+BjEsOccuHEk12bRhim8i8Zb9nagybR47LwjPMWmTexqx/NIBc4UJgDT9Z8Ap4CeXOwOKz0AW1TTO4/pLC08NgbrworCkwTQ8C8ihZX5JsapQ2U3DO4lIoHAy74uVaMM2AM1ZIWKTLsxv2qXZPyV5V4Hqqbo+ftkAmDJJGwZku6TMW350cIKNcwWI7bFSkHiStQwdv'
!db '/864fHwW3oaBLloJYvs8ZvieAazQMYRtpnIvijmaNu+dmUMR5aDbGGtvZvPAhOHOmLBX0rBKoQ15Tp5cElgva/2/31sJMJvq6AY5ZNInJiNwWUL3l0kateFddlAnkSCYAX0ItG8Lgp8BnD8uA8CqxVkbAYFfyEujyCFSgxE0PBWi7yUA8wGvnwNEBcUFenOY5sKJL+TX+OPpDSOqZ0dBZBts4PRP2R5MCBtOs0XOpaCUYsxOiIfI8gYedv8E7yCn'
!db '3RMLsViQgSGBrAQ10eApvovjAiHGc/R1wik92nqZuF5brit4/ssrYE/vmEml65URuu7JYCaPrPqLe5rVRcOcAzVfCV1EirZJo+ZVE9G6UbfdImCi4MCLq4vN51hHF4sRcE3XlAXtv0dUnV9Zfu5BIWBTVbEzuqLTqEnfEqGd9w/mwL7kExzHnYAZWFx67X5cTc8ij+aTwi2pJtVg9Q1YBIBIQPtY5qujRCbRhOmkgm3IEMyOmcVhV4JxXpxfoBDV'
!db '+cyrpgRDJ+D/Xxe0nAFhAiNIZZtkINcqYd+kLUB60QlepECsGqETQLMCHvZdLNsYyIZ9CJQVSLb+eZuhjbsEjMu4qBg31dvlH6kncfm7F4lsC3Ppq9ur61bV/xw94SXk4ThlfrsWL1rjAUyE1otWyee9N/s30pCods4SAz1wXgC5yf6MXSfvOesFHyqjkLocz8UivmojmAzlKIitiWBvWCv0c2wvouAWHOtlrUr6ddyJKv6fx9gn1I2WVnsKbxY1'
!db 'b3mVAzSH3CfFEELcge1p3YBVFeikB21bNvZg5FQiwZgWoHEsPNc7Ee3Hrhtrmrr/y1NJfHGSS/9FFpq39ZNbCU4FatWRBfI+3ZTpw0KiEMtDvOHlCueAdvZhmfCqrqcC/qVJNfupQXlTs8ECrGpHE+US2IrHmxKV/ThMbWaxgzmzt3sE+TzZ2+suTTz2bE/vZ+0Yuh8EbY3HqYMgmvm6+HKfShmhW9efRweD46C3FUbhUPiNifzeisrhixGSK4VU'
!db 'ssuKG0dJ9Mmd9xLEFOCBFPBEgqxwAH6Me8Tz5HZfap5KHK/6F9tZwIU4uLGDP/8t6dGG9Y7iMbSDSSyhhef0gB5fRbdbBDAIAekuXmr4ChFB/yvB3bzrA5B7mqW7T6YrKsjyp5ZvGRYNAQG3xNSXLplc8gpUdvswQv60iQb19ruznrJgILnb5Ug8Dm5qA7928fI2+jcwEQp3AX0YFZ+oRI0L9kDrXJcIXJrM0ksvw8yslY4856iutb0+xOXd9ZLT'
!db '8TtjKWmSp80PG1RerUxm2dM1SrVWN1Q5mLIrAUVdJJm9zjpGQhZw8fj5iwq/njkg49bi9osBQCg/8nQyui6SbzK9f8CvvMDS+tNK6gvZjUlYPVTwjYJMy/orNJsiQgGMr9JonZlpT43exSf47iSQytsmAy9kNblILb3vQyR+5Qnb5bar8swvdWpHhRVLPWExGMd6apx4TEq6e9W2WyJxfKZWGu91vCYPdX1Y+1X0CNXIqq3RYfkZ0x/p9ajlBdq8'
!db '4FMx2Z1MGtC402MwFQMfOZ04l3INOn8nI92jYfEefvdF5Hvev9dQIIio6us8w7Tdb3t2QPP89RCL6XT2ZwGak2BV4QNWUAfQHWkjSi7WYE5YFyHmNA0/4zOBInEtItCwo1kXrhSac0X6n9maq5EyMSIp4rIT/cKegFb7mEmDRK7SBYA9Fo9gLVC5wEJLCAdIbdA61ZMa+pIBloKvyhDCxcWwocAFvBrDr0TgIMLp5adF914gXlFkQi625drM0hqB'
!db '3siBcAKAntmShDZpoAK/ZMRXsJJJbRwhuNzNn6DbMuqwkzw5kQV42QqxpBz3rFiXLEGb/gX+n482M72/iUvGmdto7aw6lvtrdwRFAPCky1L97VphHepK/imSS07UthVjhwBiY3DOWNAncDnCKFtoQMVEYqrnhuPl0RO91z7FTbDp+olCUIQErgNJ8e/GfGVmN6famOzfoxpWGG1mGdXPuixwdaDR0laSFrMw3db7pHCvXmgYgutjRa5Yuppiu1n7'
!db '9fDSeUncQT/U9yp/6Kw4DnfvpHhT2zXCOAgeUEzrjhzoCxi1t8n0aZnhGSVwhsgL4oGUug7/TGv4M3BRdt1J2ZPj7FvAdN3yYU21C7dI7K9reoWRz4i+yHLfEUzIo7vpckiuYT73zjnksPPa8CzE4w5M3ZhrJEX33uSkULuG/lSfVndFlGD5SFQn7dpgbq479WxEnrYU3LRb/c/KadL5bN+0ELThA4kF8oNBOhq7Bvbrq/VpYWV2ikMVxFMKIcUn'
!db 'Y28bdGGNJMrmsny3cLr4l3pMef2ml1GdV8lXbQV4Mudx/3qtvcDAZz27z+cf7q4OzRTNRT9gQPOCcCL6Drl66BSdyfKCLDKGLvNcuBlKXj5OWrLjh2VqnJSYEtLgDgyR4E86qlOdLSjrgkYvQpMr5iBFtQOOK4+/oK+Yb43/cEhUhcWOssdbWtNZYzR8UFdQFb8/gu7o/PtRbHY9Tj8tkiYqFL57QbfeLzAodn84u3iLI779vCIqukqCeooh9vNL'
!db 'FixSK1xZAz8UPZH9CI3TXRpc2hTmP3S9AgiSnlQj5gK2GIgLoFk9AnaZqrqQiwB0cyniCS4YC/lmLth9VhFmKE6PvzC8SFRVJ6pAXnhlip2d0BPGh1DWt+JUaf0sHy8p7XJcxIWprcXX9BTUDexXuZ1lSfIa4QyeJzgsKOAf4jD8QcJ0GIhbS1F8LN8uUgDTDx+pNHfCQ51s29AzYX3d4+M2DgXWYH3tdPt+NvdwfZsa1UXnG9oGr8AVNJm/CikI'
!db 'kyi66XCWOoaWm44r9DcEDDASXcw6cjyFbgVrZlWmOS+LIjN3ehIKScOKwNcrSulnDJkZ5/tcSutWoojOAfQ9d9lk+3coYlApex9bFsJwjLcH/eC/6A=='
E:
EndDataSection
Code: Select all
OpenWindow(0, 0, 0, 400, 200, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 0, 0, 400, 200)
If StartVectorDrawing(CanvasVectorOutput(0))
Dim dotty.point(35)
x.d=200
y.d=100
r.d=40
a=Random(359)
For i=0 To 30
a+12
rd=r+Sin(Radian(a*2))*(5+3*Sin(a*5))
dotty(i)\x=x+Sin(Radian(a))*(rd)
dotty(i)\y=y+Cos(Radian(a))*(rd)
Next i
VectorSourceColor($ff000000)
MovePathCursor(dotty(0)\x,dotty(0)\y)
For i=0 To 30
;AddPathCircle(dotty(i)\x,dotty(i)\y,2)
Next i
FillPath()
MovePathCursor(dotty(0)\x,dotty(0)\y)
For i=1 To 28 Step 2
;AddPathCurve(dotty(i)\x,dotty(i)\y,dotty(i+1)\x,dotty(i+1)\y,dotty(i+2)\x,dotty(i+2)\y)
AddPathArc(dotty(i)\x,dotty(i)\y,dotty(i+1)\x,dotty(i+1)\y,r)
Next i
ClosePath()
VectorSourceColor($ff835720)
FillPath()
a=Random(30)
b=2+Random(10)
w=8
For n=1 To b
d=(a+1)%30
e=(d+1)%30
MovePathCursor(dotty(a)\x,dotty(a)\y)
AddPathArc(dotty(d)\x,dotty(d)\y,dotty(e)\x,dotty(e)\y,r)
VectorSourceColor($ff000000)
StrokePath(w,#PB_Path_RoundEnd|#PB_Path_RoundCorner)
w+1
a+2
Next n
StopVectorDrawing()
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow


