アンチエイリアス処理 – プログラミング – Home

通知
すべてクリア

[解決済] アンチエイリアス処理


dicson
 dicson
(@dicson)
ゲスト
結合: 14年前
投稿: 45
Topic starter  

32ビットDIBセクションで
アンチエイリアスがかかった円や線を描画する方法をおしえてください。
Win32API VS2008 C++ SDK


引用未解決
トピックタグ
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

GDIにはそのような機能はなかったような?
GDI+を使う場合はGraphics::SetSmoothingModeかな。
Direct2Dを使う場合は既定でアンチエイリアスがかかります。
(ID2D1RenderTarget::SetAntialiasModeで変更可)


返信引用
dicson
 dicson
(@dicson)
ゲスト
結合: 14年前
投稿: 45
Topic starter  

Win32APIというかアルゴリズムをお願いします。
DIBセクションに対して自己で描画します。


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

自前実装はやったことがないのでうまくいくかどうかわかりませんが
ちょっと調べてみた限り、数倍に拡大して描画した画像を元の大きさに縮小するという方
法があるようです。
画像の縮小アルゴリズムについては面積平均法について調べてみるとよいでしょう。


返信引用
dicson
 dicson
(@dicson)
ゲスト
結合: 14年前
投稿: 45
Topic starter  

32ビットDIBで実装しようとしたのですが、GDIは24ビット限定のようで。
どうやったら24ビット値と背景色からアルファ値を導き出せるでしょうか?


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

>どうやったら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くらいしかありませんが。


返信引用
dicson
 dicson
(@dicson)
ゲスト
結合: 14年前
投稿: 45
Topic starter  

ということはLineToやRectangleを自前で実装する必要があるのでしょうか?


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

>ということはLineToやRectangleを自前で実装する必要があるのでしょうか?
そうなりますね。。。


返信引用
dicson
 dicson
(@dicson)
ゲスト
結合: 14年前
投稿: 45
Topic starter  

subaruさん、何度もありがとうございました。
とりあえずやってみて、何か問題があれば上げます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました