[英]How can I round off the edges of pie-chart slices?
我在 11 天前發布了這篇文章,希望有人能為我做我的工作。 我現在意識到我錯了,我是一個改過自新的角色。
我嘗試使用 ControlPaint.Dark() & Light() 繪制陰影和高光,但無法讓它看起來不錯。 最后我決定,由於大多數餅圖的顏色范圍有限,我應該設置一系列完整的圓盤,其中包含着色和陰影,並根據需要裁剪扇區。
下面是一些示例光盤:
然后我設置了一個等效的 FillPie 方法,如下所示。
private static void FillImagePie(Graphics gr, Bitmap bm, Rectangle rect,
float startAngle, float sweepAngle)
// Display a pie slice of a background image.
{
// Create a clipping Region
GraphicsPath pathClip = new GraphicsPath();
pathClip.AddPie(rect, startAngle, sweepAngle);
Region regionClip = new Region(pathClip);
// Use region to clip image to the pie sector
gr.Clip = regionClip;
// Draw the image portion
gr.DrawImage(bm, rect);
// Clean up
gr.ResetClip();
regionClip.Dispose();
pathClip.Dispose();
}
這需要一張光盤bitmap,bm,設置一個餅狀的剪輯區域並繪制圖像。
然后我需要一個可以從表單的 Paint 重載中調用的控制例程。 在餅圖只有一個類別的特殊情況下,將顯示整個圓盤。 否則,每個扇區都被依次取走。 我在實踐中發現輪廓看起來參差不齊,所以我先用黑色畫筆填充扇區,然后調用 FillImagePie,然后繪制黑色輪廓。 示例結果在這里:
我對這個效果很滿意。 歡迎所有評論和調整,如果其他人有辦法使餅圖更加生動,請分享!
托尼·雷諾茲
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.