• ベストアンサー

C#を用いて描画する四角形の角を丸くする方法

教えて下さい。 書籍やインターネットで調べているのですが、四角形の角を丸く(ワードの図形描画にある「角丸四角」です。)したり面取り(日曜大工で角を落とすのとおなじ)にはどのようにしたら良いのでしょうか? 多角形は参考するのがあったのですが、「角」の加工について調べたのですが見当たりませんでした。 【四角形描画】 //Graphicsオブジェクトの作成 Graphics g = PictureBox1.CreateGraphics(); //Penオブジェクトの作成(幅1の黒色) //(この場合はPenを作成せずに、Pens.Blackを使っても良い) Pen p = new Pen(Color.Black, 1); //(10,20,100,80)の長方形を描く g.DrawRectangle(p, 10, 20, 100, 80); //リソースを開放する p.Dispose(); g.Dispose(); 【四角形の一箇所の角を丸くする】  →四角形の角の描画が残ってしまう。 //Graphicsオブジェクトの作成 Graphics g = PictureBox1.CreateGraphics(); //位置(10, 20)に100x80の四角を赤色で描く g.DrawRectangle(Pens.Red, 10, 20, 100, 80); //先に描いた四角に外接する楕円の一部 //(開始角度 0度、スイープ角度 90度)を黒で描く g.DrawArc(Pens.Black, 10, 20, 100, 80, 0, 90); //リソースを開放する g.Dispose();

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>隅の扇形を描く前に、角を含む四角形で消去(背景色で描画)してはいかがでしょうか。 背景がビットマップとかで消したくない場合はNGですね。 パスを使って描画範囲を限定するのがいいかと。 WindowsAPIならRoundRect()で一発なんですけどね。 .NETの場合は、こんな感じで組み合わせればいいでしょう。 角の丸い四角形を描画します。 System.Drawing.Drawing2D.GraphicsPath.AddLines System.Drawing.Pen.LineJoin = System.Drawing.Pen.LineJoin.Round System.Drawing.Graphics.DrawPath System.Drawing.Graphics.FillPath

参考URL:
http://www.microsoft.com/japan/msdn/net/general/win32map.asp
asaichi
質問者

お礼

遅くなりました。 アドバイスありがとうございます。 APIだったら容易だったのですか… まずは、アドバイスとURLを元に試してみます。

その他の回答 (1)

  • JUN-2
  • ベストアンサー率26% (360/1349)
回答No.1

隅の扇形を描く前に、角を含む四角形で消去(背景色で描画)してはいかがでしょうか。  ■────■  │    │  ■────■

asaichi
質問者

お礼

ありがとうございます。 影響する箇所を隠してしまって扇形を描画するのですね。 勉強になります。