同じ点数*1で Polyline(Win32API) と Graphics::DrawLines (GDI+) とで線を描いてみたけれど、後者が圧倒的に遅い。 3 秒くらいかかってしまう。これはまずいなあ。なんとかならないかな。
追記
描画対象を TImage から TPaintBox に変更したらそこそこ早くなりました。 TImage(VCL) 側にネックがあるのかなあ。そっちのソースも読んでおくか……。
大分速くなったとはいえ、それでもまだ差があるのでもう少し突き詰めてみよう。色々オーバヘッドがかかってしまう分パフォーマンスが落ちるのは仕方ないと思いますが、できれば体感できないくらいに抑えたいところ。
追記(2)
ソース読んだとこでは TImage::Canvas は TBitmap のもので、 TPaintBox::Canvas は普通のキャンバスになっているらしい。ビットマップへの描画が遅いということなのかな。とりあえず後者なら多少マシにはなるらしい。
ビットマップへの描画が遅いのも問題だけれどまあこれはいいや。本番ではデバイスコンテキストに書いちゃうし。
*1:4000 点ほど