アンチエイリアス

Delphiで作ってるソフトでスキンの表示に時計を描画しているんだけど、どうにも汚い。
大抵のアナログ時計ソフトって綺麗にアンチエイリアスしてますよね・・・。
ゼロから描画処理を見直す気力ないので、最低限の処理でアンチエイリアス化できないかと考えてみた。
結論としては、最初に縦横2倍のサイズのバッファをつくっておいて、内部で全て2倍のサイズで描画処理を終了させる(時計の針も文字も)。スキンは事前に単純拡大で貼り付けておく。
描画が終了したら、4ピクセルを1ピクセルに平均処理かけながら、本来のサイズの領域へ(同じバッファ上でもOK)縮小処理していく。
できあがったらフォーム上へbitblt転送。
 
脳内コーディングでは特に問題になりそうな部分はないな・・・よしよし。
 
アンチエイリアス化(4pix→1pix)は部員弐号さんのABitmapのアンチエイリアス文字の処理を参考にする。時間はかかりそうだけど、320x80(640x160)が200ms未満で処理できればOK。
扱う画像が32bitに統一にしてあって単純なbyte配列の演算で済むから、そこそこ高速化できそう。
土日に検証してみることとする。