トップページ > 過去ログ > 記事閲覧
DrawCircleの輪郭線について
名前:ばりこん 日時: 2011/04/16 23:18

DrawCircleを用いて、中を塗りつぶさない円を表示する際、輪郭線の太さを指定することはできるのでしょうか? DrawCircleを複数回、円の大きさを1pixelだけ変えて表示した場合、それぞれの円の輪郭線に隙間が生じてしまうため、あまり実用的ではありません。

Page: 1 |

Re: DrawCircleの輪郭線について ( No.1 )
名前:埴輪 日時:2011/04/18 23:29

◎のように二つの円を書き、間をPaint関数で塗りつぶされてはいかがでしょう。
Re: DrawCircleの輪郭線について ( No.2 )
名前:ばりこん 日時:2011/04/19 13:42

なるほどと思い実行してみましたが、円の間がうまく塗りつぶされません。背景に写真がおかれているため、円の間の色が一様でないためと考えられるのですが、これを打開する方法はないでしょうか?
Re: DrawCircleの輪郭線について ( No.3 )
名前:いっち 日時:2011/04/19 20:17

Paint ですと線の太さが小さい場合うまく動作するか怪しい感じなので、 現状ではおそらくZバッファを利用するのが一番やりやすいかと思います。 ただ、これも Thickness が 1 の時は普通に描画したほうがきれいです。 //- 以下、テストコード -// #include "DxLib.h" int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int ) { ChangeWindowMode( TRUE ); if ( DxLib_Init( ) == -1 ) return -1; int Color = GetColor( 255, 255, 255 ); const int r = 200; const unsigned int Thickness = 10; DrawBox( 0, 0, 640, 480, GetColor( 255, 0, 0 ), TRUE ); SetDrawValidAlphaChannelGraphCreateFlag( TRUE ); int bgh = MakeScreen( r * 2 + 1, r * 2 + 1 ); SetDrawValidAlphaChannelGraphCreateFlag( FALSE ); SetUseZBufferFlag( TRUE ); SetDrawScreen( bgh ); DrawCircleToZBuffer( r, r, r - Thickness, TRUE, DX_ZWRITE_MASK ); DrawCircle( r, r, r, Color, TRUE ); ClearDrawScreenZBuffer( ); SetUseZBufferFlag( FALSE ); SetDrawScreen( DX_SCREEN_FRONT ); DrawGraph( 640 / 2 - r, 480 / 2 - r, bgh, TRUE ); WaitKey( ); DxLib_End( ); return 0; }
Re: DrawCircleの輪郭線について ( No.4 )
名前:ばりこん(解決) 日時:2011/04/20 15:34

いっちさん、ありがとうございます。 テストコードに基づきソースを記述したところ、太線で円を書くことができました。 ありがとうございました。この件は解決とします。

Page: 1 |