32ビットDIBセクションで
アンチエイリアスがかかった円や線を描画する方法をおしえてください。
Win32API VS2008 C++ SDK
GDIにはそのような機能はなかったような?
GDI+を使う場合はGraphics::SetSmoothingModeかな。
Direct2Dを使う場合は既定でアンチエイリアスがかかります。
(ID2D1RenderTarget::SetAntialiasModeで変更可)
Win32APIというかアルゴリズムをお願いします。
DIBセクションに対して自己で描画します。
自前実装はやったことがないのでうまくいくかどうかわかりませんが
ちょっと調べてみた限り、数倍に拡大して描画した画像を元の大きさに縮小するという方
法があるようです。
画像の縮小アルゴリズムについては面積平均法について調べてみるとよいでしょう。
32ビットDIBで実装しようとしたのですが、GDIは24ビット限定のようで。
どうやったら24ビット値と背景色からアルファ値を導き出せるでしょうか?
>どうやったら24ビット値と背景色からアルファ値を導き出せるでしょうか?
アルファ値を適用するという意味であれば計算式はこちら。
http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%96%E3%83%AC%E3%83%B3%E3%83%89
一応GDIでも32ビットのDIB自体は作成できます。
アルファに対応した関数はAlphaBlendくらいしかありませんが。
ということはLineToやRectangleを自前で実装する必要があるのでしょうか?
>ということはLineToやRectangleを自前で実装する必要があるのでしょうか?
そうなりますね。。。
subaruさん、何度もありがとうございました。
とりあえずやってみて、何か問題があれば上げます。