プロが教える店舗&オフィスのセキュリティ対策術

教えて下さい。
書籍やインターネットで調べているのですが、四角形の角を丸く(ワードの図形描画にある「角丸四角」です。)したり面取り(日曜大工で角を落とすのとおなじ)にはどのようにしたら良いのでしょうか?
多角形は参考するのがあったのですが、「角」の加工について調べたのですが見当たりませんでした。

【四角形描画】
//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();

A 回答 (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/ …
    • good
    • 0
この回答へのお礼

遅くなりました。

アドバイスありがとうございます。
APIだったら容易だったのですか…

まずは、アドバイスとURLを元に試してみます。

お礼日時:2004/08/26 16:44

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



 ■────■
 │    │
 ■────■
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/08/12 16:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています