簡體   English   中英

.NET餅圖:如何向切片添加文本和旋轉圖表

[英].NET pie chart: how to add text to slices and rotate chart

下面的代碼創建了一個24切片餅圖。 我如何:

  1. 在“財富之輪”中為每個切片添加文本標簽。
  2. 旋轉餅圖? 我希望它像“財富之輪”一樣旋轉。

     private void DrawPieChart() { Graphics g = this.CreateGraphics(); g.Clear(this.BackColor); Rectangle rect = new Rectangle(0, 0, 300, 300); float angle = 0; Random random = new Random(); int sectors = 24; int sweep = 360 / sectors; for(int i=0; i<24;i++) { Color clr = Color.FromArgb(random.Next(0, 255),random.Next(0, 255), random.Next(0, 255)); g.FillPie(new SolidBrush(clr), rect, angle, sweep); angle += sweep; } g.Dispose(); } 

要添加文本標簽,請調用g.DrawString

編輯 :要使textvertical像圖像一樣,將Graphics對象旋轉到angle + sweep / 2 ,然后繪制文本。 為了使它向下繪制,yopu可能能夠以較小的寬度繪制它並依靠字符包裹; 如果這不起作用,繪制字符vy chaaracter並使用g.MeasureString來確定下一個字符的放置位置。

要旋轉整個圖表,請在繪制之前以度數角度調用g.RotateTransform 編輯 :像這樣:

    private void DrawPieChart()
    {
        Graphics g = this.CreateGraphics();
        g.Clear(this.BackColor);
        Rectangle rect = new Rectangle(0, 0, 300, 300);
        float angle = 0;
        Random random = new Random();
        int sectors = 24;
        int sweep = 360 / sectors;

         g.RotateTransform(90);        //Rotates by 90 degrees
         for(int i=0; i<24;i++)
        {
            Color clr = Color.FromArgb(random.Next(0, 255),random.Next(0, 255), random.Next(0, 255));
            g.FillPie(new SolidBrush(clr), rect, angle, sweep);
            angle += sweep;
        }
        g.Dispose();
    }

要為旋轉設置動畫,請為角度創建一個字段,在計時器上增加該字段,然后將該字段傳遞給g.RotateTransform

另外,繪制事物的正確方法是處理控件的Paint事件,並使用e.Graphics 然后,當您想重繪它時,請調用Invalidate 要防止閃爍,請調用this.SetStyle(ControlStyles.DoubleBuffer, true); 在構造函數中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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