Die Canvas-Objekte dafür sollten reichen, aber um das selbstzeichnen kommst Du nicht drum rum.
Es gibt fertige Komponenten, die einen Bruchteil was Visio kann, auch können, das könnte man evtl. je nach Qualität als Code-Basis verwenden, ansonsten selbst schreiben