Немного больше информации было бы полезно, например, типы полигонов, которые вы используете, вашу видеокарту и какую версию WPF вы используете.
Я попробовал ваш пример, и у меня не было проблем с 500 простыми полигонами. (Core 2 Duo, 8800 GTS). Ваш пример и другие случаи, когда у вас есть довольно сложный контент, который не очень часто меняется, но вы преобразуете его, может значительно выиграть от BitmapCache .
<Canvas.CacheMode>
<BitmapCache />
</Canvas.CacheMode>
С помощью BitmapCache вы сможете преобразовать столько элементов, сколько захотите, хотя вы все равно будете испытывать снижение производительности всякий раз, когда их нужно будет перерисовать. Если вы используете сложные пути, вы также можете попробовать заморозить их.