簡體   English   中英

如何修圓餅圖切片的邊緣?

[英]How can I round off the edges of pie-chart slices?

我有 C# 代碼來使用每個切片的常規代碼繪制餅圖:

gr.FillPie(brFill, rect, start_angle, sweep_angle);
gr.DrawPie(penOutline, rect, start_angle, sweep_angle);

這很好用:問題是它看起來很無聊。 我想得到如下效果; 也就是說,保持它是二維的,但將邊緣四舍五入。 在此處輸入圖像描述

我想我需要以某種方式使用路徑漸變畫筆,但我看過的例子都沒有幫助。

感謝任何幫助或提示。

托尼·雷諾茲

我在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM