WPF использует другую модель для манипуляции графикой, чем WinForms.
С WinForms вы можете напрямую редактировать пиксели на экране. Концепция вашего прямоугольника теряется после рисования пикселей. Рисование пикселей - это очень быстрая операция.
С WPF вы не управляете пикселями на экране. DirectDraw есть. DirectDraw - это векторный механизм композитинга. Вы не рисуете пиксели. Вы определяете векторные фигуры (или визуальные элементы). Концепция формы или прямоугольника сохраняется, даже после того, как изображение отображается на экране. Когда вы добавляете новый прямоугольник, который перекрывает другие, ВСЕ ДРУГИЕ прямоугольники должны быть перерисованы. Это, вероятно, где ваша производительность замедляется. Это не происходит при использовании WinForms.
Вы можете немного улучшить производительность WPF, переопределив OnRender. Вы можете вырезать накладные расходы на объект Rectangle и напрямую предоставить визуальные эффекты. Однако вы все еще не рисуете пиксели на экране. Вы определяете фигуры, которые DirectDraw использует для визуализации изображения. В связи с этим имя OnRender может вводить в заблуждение.
Я уверен, что вы можете найти множество хитростей для повышения производительности вашего приложения в WPF. Есть способы по-прежнему рисовать пиксели, но это своего рода победа над WPF.
Что вы делаете, для чего нужны тысячи прямоугольников?