LineやCircleのギザギザをなくしたい


マサオ  2008-03-26 17:17:10  No: 139399  IP: 192.*.*.*

VB6+XPでやっています。
グラフィックスでLineやCircleを書かせたときのギザギザを目立たなくしたいと思っています。仕様上やむをえないものではありますが細い線の場合やCircleでは例えば日の丸などは円くならずちょっと拡大したりすると丸くないのが目立ちますがアンチエイリアスの掛かった日の丸はちょっと拡大してもそれらしく見えます。どのように処理するのか教えてください。

編集 削除
やじゅ  2008-03-26 21:20:51  No: 139400  IP: 192.*.*.*

VB6でもGDI+が使えるので、
GDI+の機能を使って、アンチエイリアス(SmoothingMode)で
描画すればいいのではないかな。

http://yaplog.jp/orator/archive/29
http://dobon.net/vb/dotnet/graphics/antialias.html

編集 削除
マサオ  2008-03-27 14:05:34  No: 139401  IP: 192.*.*.*

やじゅ様  回答をありがとうございました。
ご紹介いただいたサイトを見ましたがVB6でも出来るということでわかり安心しました。

http://yaplog.jp/orator/archive/29ではGDI+のAPI宣言などが
http://dobon.net/vb/dotnet/graphics/antialias.htmlではDrawLineに関するソース(.NET)がありましたので工夫すれば何とかなるのではないかと朝からトライしていますが理解できていないのでどうにも歯が立ちませんでした。
勉強不足で申し訳ありませんがGDI+でDrawLineを使う場合のAPI宣言のしかた、参照設定などは必要か、など重ねてご教示をお願いします。

編集 削除
やじゅ  2008-03-27 19:28:10  No: 139402  IP: 192.*.*.*

GDI+でDrawLineを使う場合のAPI宣言のしかた

http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=37541&lngWId=1

編集 削除
K.J.K.  2008-03-28 10:18:20  No: 139403  IP: 192.*.*.*

その「拡大」という処理が気になります。今はどのように行っているの
でしょうか?

線であることを重視するのであれば、ビットマップとして保存した
線などの描かれた画像として扱うのではなく、その都度線を描画する
べきでしょう。

編集 削除
マサオ  2008-03-28 10:40:18  No: 139404  IP: 192.*.*.*

やじゅ様  的確なアドバイスをありがとうございました。
内容はGDI+のVB6での使用方法についての大全集にような内容の濃いもので大感謝です。早速DLしてテスト中です。  FORMにあるボタンはこのソフトに収められているほんの一部分なのでボタンを沢山作って一つづつ効果を確かめています。DrawLine、DrawLines,  DrawLinesIなどの違いは何か?などについてこれから確認したいと思っています。おそらくこれでいけるものと思いますが作成中のソフトに実装した段階で解決サインを押させていただきたいと思います。アンチエイリアスだけに限らずGDI+についての全般的な使われ方を知り大変勉強になりました。

(なおfrmDrawのchkAAのプロパティーはCheckBoxとなっていますが当方のPCでは外観がコマンドボタンでチェックの枠がなく、またこれに関連するコマンドが全くないためここでは効果を確認できません。ここに何が書かれているのか分かったら教えてください)

編集 削除
魔界の仮面弁士  2008-03-28 11:30:48  No: 139405  IP: 192.*.*.*

> なおfrmDrawのchkAAのプロパティーはCheckBoxとなっていますが
Style プロパティが [1 - グラフィックス] に設定されていますね。

> 関連するコマンドが全くないため
Form_MouseDown イベント中で使っていますよ。<chkAA

編集 削除
マサオ  2008-03-28 12:58:50  No: 139406  IP: 192.*.*.*

魔界の仮面弁士様  ありがとうございます。気づきませんでした。

DrawBezierでは希望するようなスムーズな線となりますがFreeHandTestのFormでやってみるとchkAAにチェックを入れると縦線、横線は線幅が指定通りに、斜線の場合は太い線になってしまい、また線のほとんどの部分がギザギザ線のままで所々中間色が点在する程度のようです。

現在20種類程度のテスト描画をしていますが少しづつ理解を深め、必要なAPIのみを探してコンパクトなものにしようと思います。ものすごい価値のアルライブラリであると一つ一つ驚きながら眺めています。  ありがとうございます。

編集 削除