Du könntest dir eine Art Maske im Speicher hinterlegen, ähnlichem der Alpha-Kanal bei geblendetem Images. Das wäre ein zweidimensionales Array von Boolean-werten die angeben, ob das Pixel gezeichnet werden soll oder nicht. In diesem Array setzt du dann durch eine "ausgefüllten Kreis malen"-Funktion alles relevanten Werte auf true, und den Rest auf False.
Dann brauchst du dein Bild, das die gleichen Maße hat wie dein Array. Das legst du sinnbildlich unter die Maske und malst nur die Pixel, deren passender Wert in dem Array true ist.
Auf diese Weise hast du in etwa das nachgebildet, was die Windows
GDI unter dem Thema Clipping versteht (was wiederum bedeutet, das du auch das Clipping nutzen könntest.
)