掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
円弧を描く線の縁に黒細線を着けるには?、 (ID:72256)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 2本の黒細線の間に色の帯があるように、描きたいのですが、簡単な関数はあるでしょうか? 簡単な関数は知らないが、自分でヤるならこんな手も有る。 void draw(CDC& dc, const CRect& r, DWORD penstyle, DWORD width, COLORREF color) { const int id = dc.SaveDC(); dc.SetPolyFillMode(WINDING); dc.SetArcDirection(AD_CLOCKWISE); LOGBRUSH lb; lb.lbStyle = BS_SOLID; CPen draft(penstyle | PS_GEOMETRIC | PS_ENDCAP_ROUND | PS_JOIN_ROUND, width, &lb); dc.SelectObject(&draft); dc.BeginPath(); // sample1. 円弧 dc.Arc(r, CPoint(r.left, (r.top + r.bottom) * 3 / 4), CPoint(r.right, (r.top + r.bottom) * 3 / 4)); // sample2. 左下 -> 中央 -> 右下 と繋がる連続線 dc.MoveTo(r.left, r.bottom); dc.LineTo(r.CenterPoint()); dc.LineTo(r.BottomRight()); dc.EndPath(); dc.WidenPath(); #if 0 // こっちだと曲線、折線等を描画時に縁が旨く描けねぇ… CPen frame(PS_SOLID, 1, RGB(0x00, 0x00, 0x00)); CBrush fill(color); dc.SelectObject(&frame); dc.SelectObject(&fill); dc.StrokeAndFillPath(); #else CRgn rgn; rgn.CreateFromPath(&dc); CBrush frame(RGB(0x00, 0x00, 0x00)); CBrush fill(color); dc.FillRgn(&rgn, &fill); dc.FrameRgn(&rgn, &frame, 1, 1); #endif dc.RestoreDC(id); } void xxxxxxxxxxxxxxxx() { draw(dc, rect, PS_SOLID, 20, RGB(0xff, 0x80, 0x00)); }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.