[英].NET pie chart: how to add text to slices and rotate chart
下面的代碼創建了一個24切片餅圖。 我如何:
旋轉餅圖? 我希望它像“財富之輪”一樣旋轉。
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.