饼图透明度,多个饼图

2023-12-09

我想将两个饼图堆叠在一起。这里的想法是将其中一个变小,这样您就只能看到后面饼图的外环。我尝试使用:

chartCalProgres.BackColor = Color.Transparent;
chartCalProgres.ChartAreas[0].BackColor = Color.Transparent;

但正如您在下面的链接中看到的那样,它不起作用。有人知道如何实现这种效果吗?

饼状图

应该看起来像这样


这对于饼图来说是不可能的,但是您可以使用 ChartType.Doughnut 很好地完成它:

two-ringed doughnut

步骤如下:

1 我们需要有两个系列和两个图表区域

2 我们需要控制CA 的Position、Size 和InnerPlotPosition。它们必须重叠并具有正确的尺寸。

3 我们还需要控制我们使用的两个Series的DoughnutRadius。这是内半径。

4 最后我们需要将内部系列的背景颜色设置为透明。

这是设置我的示例的代码:

    using System.Windows.Forms.DataVisualization.Charting;
    //..

    Random R = new Random(); //Added to allow code to work
    chart1.Series.Clear();
    Series S1 = chart1.Series.Add("Pie1");
    Series S2 = chart1.Series.Add("Pie2");

    chart1.ChartAreas.Clear();

    ChartArea CA1 = chart1.ChartAreas.Add("Outer");
    ChartArea CA2 = chart1.ChartAreas.Add("Inner");

    CA1.Position = new ElementPosition(0, 0, 100, 100);
    CA2.Position = new ElementPosition(0, 0, 100, 100);

    float innerSize = 60;
    float outerSize = 100;
    float baseDoughnutWidth = 25;

    CA1.InnerPlotPosition = new ElementPosition((100 - outerSize) / 2,
            (100 - outerSize) / 2 + 10, outerSize, outerSize - 10);

    CA2.InnerPlotPosition = new ElementPosition((100 - innerSize) / 2,
            (100 - innerSize) / 2 + 10, innerSize, innerSize - 10);

    S1["DoughnutRadius"] = 
     Math.Min(baseDoughnutWidth * (100 / outerSize), 99).ToString().Replace(",", ".");
    S2["DoughnutRadius"] = 
     Math.Min(baseDoughnutWidth * (100 / innerSize), 99).ToString().Replace(",", ".");
    

    S1.ChartArea = CA1.Name;
    S2.ChartArea = CA2.Name;

    S1.ChartType = SeriesChartType.Doughnut;
    S2.ChartType = SeriesChartType.Doughnut;

    CA2.BackColor = Color.Transparent;
    S1["DoughnutRadius"] = "41"; // leave just a little space!
    S2["DoughnutRadius"] = "99"; // 99 is the limit. a tiny spot remains open

    // test data, optional, R is a Random instance
    for (int i = 0; i < 7; i++)
    {
        S1.Points.AddXY(i, 42 - R.Next(44));
        S2.Points.AddXY(i, 77 - R.Next(88));
    }
}

请注意设置 DoughnutRadius 的奇怪方法;另请注意,图表中的许多数字是图表控件大小的百分比..!

我找到了代码here,所有荣誉都归于 fireblade123、Escener Technologies!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

饼图透明度,多个饼图 的相关文章

随机推荐

  • Rails 从 JSON 数组中选择

    我有一个从 Foursquare 返回的 JSON 数组 我们就这样称呼它吧 venues 我希望能够通过下拉框 选择 场地 并且我希望它成为表单的一部分 这意味着我希望能够按名称选择特定场地 即本例中为 Hotel Utah Saloon
  • 关于使用 Installshield 2013 (.issuite) 项目文件生成的 Setup.exe 进行静默安装

    我有一个使用 installshield 套件项目 issuite 文件生成的 setup exe 文件 对于具有足够权限的管理员或普通用户 我们的 IT 管理员之一可以使用以下命令进行静默安装 setup exe silent 但是 当尝
  • 按本地化排序列表

    我需要排序一个List
  • 通过jquery获取对象数组的索引

    我有以下数组 var array id aa description some description id bb description some more description id cc description a lot of d
  • 在 OSX Yosemite 上的 Emacs 中使用 LLVM 调试器

    我想知道是否可以将 LLVM 调试器与 Emacs 一起使用 例如M x gdb接口标准 提前致谢 令人惊讶的是 向 Emacs 添加 LLVM 调试器支持是有争议的 或者没有争议 取决于您的愤世嫉俗程度 2015年2月 理查德 斯托曼写道
  • 操作系统导致的 irq 延迟是多少?

    如何估计 ARM 处理器上的 irq 延迟 irq 延迟的定义是什么 中断请求 irq 延迟是中断请求从中断源传输到被服务点所需的时间 因为有不同的中断通过不同的路径来自不同的源 显然它们的延迟取决于中断的类型 您可以找到有关特定中断的延迟
  • web.config 中的 C# 命名空间

    来自 VB 背景并被迫学习 C 的我遇到了第一个障碍 在 VB 中 我可以将我想要在整个应用程序中可用的所有命名空间放入 web config 文件中 并且它将在每个代码隐藏文件中可用 而无需添加导入语句
  • 在单体 SpringBoot 应用程序中创建集成测试

    我被要求为一个非常大的 SpringBoot 项目中的一个服务创建一个集成测试 该项目产生了数十个已实现的服务 执行应用程序时 会部署所有这些服务 我想避免部署与我正在为其创建测试的服务无关的所有服务 不幸的是 我 还 没有像我希望的那样有
  • ViewBox 使 RichTextBox 失去插入符

    RichTextBox 放置在 ViewBox 内并缩放至 10 1000 的各个级别 当百分比小于 100 时 插入符号会在随机光标位置消失 我知道当视觉效果被缩小 压缩 时 它会丢失像素 有什么办法可以让我不再丢失光标吗
  • create-react-app 和节点服务器的 ECONNREFUSED 错误

    我正在使用 create react app 因此没有自定义 webpack 和节点服务器构建 MERN 应用程序 我正在使用 nodemon 重新启动后端上的更改 问题是大约一半的时间似乎我的前端尝试在 nodemon 重新启动节点服务器
  • jQuery .click() 不起作用?

    我在 html 表中生成了一组按钮 如下所示 然后我想在单击时调用该函数 each childData function key item var packPath key replace g Replace underscore with
  • 根据第一个非零将数字舍入到最接近的“nth”

    我想将 Double 舍入到小数点后最接近的非零数字 例如 x 0 002341 rounded 0 002 x 0 000048123 rounded 0 00005 对于基数 gt 0 的情况 应该这样执行 x 1 000234 rou
  • 将列表向量转换为向量向量

    我的 txt 文件中有以下数据 1 John Smith 123 Here Street 456 4567 2 Sue Jones 43 Rose Court Street 345 7867 3 Fan Yuhong 165 Happy L
  • 创建转弯导航 iPhone 应用程序

    我正在尝试构建一个像 TomTom 或 Mapquest 这样的路线导航应用程序 并且我正在寻找一些入门帮助 以获取可用选项和许可 如果有 从技术上讲 我认为通过 Core Location 在地图上绘制当前位置或地址相当容易 但我有一些更
  • null 在此代码中如何工作? [复制]

    这个问题在这里已经有答案了 null 在此代码中如何工作 为什么它不打印对象 class Test1 public void doStuff Object o System out println In Object public void
  • 使用 MongoDB / Meteor 更新数组中的特定元素

    users voted user id AQG8ECLdBRJ4jwPMG score down 想知道我将如何更新users votedfield 是一个数组对象 我需要更新一个特定的对象 我知道index该对象所在的位置 我只需要弄清楚
  • 如何正确关闭 ODP.net 连接:dispose() 或 close()?

    这是我的powershell代码 void System Reflection Assembly LoadFile C DLL Oracle ManagedDataAccess dll OracleConnexion New Object
  • nginx 未知指令“auth_jwt”

    我想在我的 nginx 上设置 jwt auth 但出现此错误 nginx emerg unknown directive auth jwt in usr local etc nginx nginx conf 我的 nginx 版本 ngi
  • 以编程方式确定 UNC 路径中的可用空间

    是否有用于从 UNC 路径确定 NAS 存储上的可用空间的编程 API 我查看了 WMI 文档 并不清楚这是否可行 如果有代码示例和相关 API 调用的参考 我们将不胜感激 在 Windows API 中 获取FreeDiskSpaceEx
  • 饼图透明度,多个饼图

    我想将两个饼图堆叠在一起 这里的想法是将其中一个变小 这样您就只能看到后面饼图的外环 我尝试使用 chartCalProgres BackColor Color Transparent chartCalProgres ChartAreas