当前位置: 首页 > article >正文

c++ haru生成pdf输出饼图


#define PI 3.14159265358979323846

// 绘制饼图的函数
void draw_pie_chart(HPDF_Doc pdf, HPDF_Page page, float *data, int data_count, float x, float y, float radius) {
    float total = 0;
    int i;

    // 计算数据总和
    for (i = 0; i < data_count; i++) 
    {
        total += data[i];
    }

    float start_angle = 0;
    for (i = 0; i < data_count; i++) {
        // 计算当前数据所占的角度
        float angle = data[i] / total * 360;

        // 设置不同的颜色
        HPDF_Page_SetRGBFill(page, (float)rand() / RAND_MAX, (float)rand() / RAND_MAX, (float)rand() / RAND_MAX);

        // 绘制扇形
        HPDF_Page_MoveTo(page, x, y);
        HPDF_Page_Arc(page, x, y, radius, start_angle, start_angle + angle);
        HPDF_Page_ClosePath(page);
        HPDF_Page_Fill(page);

        start_angle += angle;
    }
}

void generalPip()
{
    HPDF_Doc pdf;
    HPDF_Page page;
    float data[] = { 30, 20, 20,30 };  // 示例数据
    int data_count = sizeof(data) / sizeof(data[0]);

    // 创建一个新的 PDF 文档
    pdf = HPDF_New(NULL, NULL);
    if (!pdf) {
        printf("Error: Cannot create PDF document.\n");
        return;
    }

    // 添加一个新页面
    page = HPDF_AddPage(pdf);
    HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT);

    // 绘制饼图
    draw_pie_chart(pdf, page, data, data_count, 200, 300, 100);

    // 保存 PDF 文件
    HPDF_SaveToFile(pdf, "pie_chart.pdf");

    // 释放资源
    HPDF_Free(pdf);
}
 

包含的库下载地址:

https://download.csdn.net/download/u011269801/90259877

相关文章:

c++ haru生成pdf输出饼图

#define PI 3.14159265358979323846 // 绘制饼图的函数 void draw_pie_chart(HPDF_Doc pdf, HPDF_Page page, float *data, int data_count, float x, float y, float radius) { float total 0; int i; // 计算数据总和 for (i 0; i < data_count; i) { tot…...

sentinel的限流原理

Sentinel 的限流原理基于 流量统计 和 流量控制策略&#xff0c;通过动态规则对系统资源进行保护。其核心设计包括以下几个关键点&#xff1a; 流量统计模型&#xff1a;滑动时间窗口 Sentinel 使用 滑动时间窗口算法 统计单位时间内的请求量&#xff0c;相比传统的固定时间窗…...

[权限提升] Linux 提权 维持 — 系统错误配置提权 - 通配符(ws)注入提权

关注这个专栏的其他相关笔记&#xff1a;[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01&#xff1a;通配符&#xff08;ws&#xff09;注入提权原理 通配符注入提权的核心是利用通配符的扩展特性&#xff0c;在命令执行时生成意外的参数或文件名&#xff0c;从而改变命令的行…...

C++,STL容器 set/multiset:集合/多重集合深入解析

文章目录 一、容器概览二、核心特性对比三、基础操作详解四、关键成员函数解析五、底层实现探秘六、性能优化实践七、典型应用场景数据去重统计实时排行榜维护区间查询系统八、注意事项与陷阱元素不可变性自定义类型的比较函数迭代器失效问题进阶技巧:结合STL算法十、总结与选…...

Neo4j图数据库学习(二)——SpringBoot整合Neo4j

一. 前言 本文介绍如何通过SpringBoot整合Neo4j的方式&#xff0c;对图数据库进行简单的操作。 Neo4j和SpringBoot的知识不再赘述。关于Neo4j的基础知识&#xff0c;有兴趣可以看看作者上一篇的文章&#xff1a;Neo4j图数据库学习(一)——初识CQL 二. 前置准备 新建SpringBo…...

整合 Redis 分布式锁:从数据结构到缓存问题解决方案

引言 在现代分布式系统中&#xff0c;Redis 作为高性能的键值存储系统&#xff0c;广泛应用于缓存、消息队列、实时计数器等多种场景。然而&#xff0c;在高并发和分布式环境下&#xff0c;如何有效地管理和控制资源访问成为一个关键问题。Redis 分布式锁正是为了解决这一问题…...

使用AI Agents集成外部API开发智能客服解决方案(上)

生成式AI的出现已经彻底改变了传统客服&#xff0c;为开发者和企业提供了更快速、更准确、更个性化的响应能力。其中由大语言模型&#xff08;LLM&#xff09;驱动的AI代理能够分析复杂的客户咨询&#xff0c;访问多个数据源&#xff0c;并提供相关的详细答案。在本文中&#x…...

2025手机电池技术革新,

具有AlN势垒和AlGaN背势垒的硅基GaN HEMT在电池兼容电压下提供突破性的输出功率 新加坡的一个工程师团队声称&#xff0c;他们通过研究低压硅基GaN HEMT的双异质结构设计的潜力&#xff0c;开辟了新的天地。 这些研究人员认为&#xff0c;这类晶体管是5G频率范围2频段功率 具…...

现在中国三大运营商各自使用的哪些band频段

现在中国三大运营商4G和5G频段分配情况&#xff1a; 中国移动 4G频段&#xff1a; TD-LTE&#xff1a; Band 39&#xff1a;1880-1920MHz&#xff0c;实际使用1885-1915MHz。 Band 40&#xff1a;2300-2400MHz&#xff0c;实际使用2320-2370MHz。 Band 41&#xff1a;2515-26…...

Linux系统-centos防火墙firewalld详解

Linux系统-centos7.6 防火墙firewalld详解 1 firewalld了解 CentOS 7.6默认的防火墙管理工具是firewalld&#xff0c;它取代了之前的iptables防火墙。firewalld属于典型的包过滤防火墙或称之为网络层防火墙&#xff0c;与iptables一样&#xff0c;都是用来管理防火墙的工具&a…...

Java Stream API:高效数据处理的利器引言

Java Stream API&#xff1a;高效数据处理的利器引言 在 Java 编程中&#xff0c;数据处理是一项极为常见且关键的任务。传统的 for 循环在处理数据集合时&#xff0c;往往会导致代码变得冗长、复杂&#xff0c;这不仅增加了代码的编写难度&#xff0c;还降低了代码的可读性和…...

RK3568实战项目(六)--开发工具介绍

目录 一、引言 二、开发工具 ------>2.1、trust_merger ------>2.2、boot_merger ------>2.3、loaderimage ------>2.4、resource_tool ------>2.5、mkimage ------>2.6、mkbootimg ------>2.7、unpack_bootimg ------>2.8、repack-bootimg …...

Unity3D仿星露谷物语开发28之切换场景

1、目标 Player可以在Scene1_Farm和Scene2_Field之间自动切换。通过Trigger实现该功能。同时创建一个预设体绑定该功能&#xff0c;这样可以把预设体放到任何场景中&#xff0c;通过配置即可实现Player在Scene之间的自由切换。 2、创建场景切换的工具对象 在Hierarchy中&…...

阿里通义实验室提出AnyStory:开启个性化文本到图像生成的新篇章!

在这个数字化时代&#xff0c;生成式AI技术正以前所未有的速度改变着我们的创作方式。近期&#xff0c;阿里通义实验室发表了一篇题为《AnyStory: Towards Unified Single and Multi-Subject Personalization in Text-to-Image Generation》的论文&#xff0c;该论文提出了一种…...

开启蓝耘之旅:DeepSeek R1 模型在智算平台的起步教程

----------------------------------------------------------我的个人主页-------------------- 动动你的手指----------------------------------------点赞&#x1f44d; 收藏❤--------------------------------------------------------------- 引言 在深度学习的广袤领…...

LVS + KeepAlived 配置HA集群的步骤

LVS KeepAlived 配置HA集群的步骤 &#xff08;一&#xff09;集群准备 准备vmvare linux虚拟主机4台&#xff0c;假设对外提供的VIP是192.168.174.110 主机IP备注LVS1192.168.174.101提供4层代理-主机LVS2192.168.174.102提供4层代理-备用Apache1192.168.174.201真实服务器…...

ISAAC Sim 1.1. Isaac Sim 4.2.0 环境配置

我使用的系统是ubuntu20.04&#xff0c;根据推荐使用Binary installation 1.下载和安装 1.1. Isaac Sim 参照Installation using Isaac Sim Binaries — Isaac Lab Documentation完成ISAAC SIM安装。 1.2. Isaac Lab “Isaac Lab 提供您需要的工具&#xff0c;以便您根据项…...

活动预告 | Power Hour: Copilot 引领商业应用的未来

课程介绍 智能化时代&#xff0c;商业应用如何实现突破&#xff1f;微软全球副总裁 Charles Lamanna 将为您深度解析&#xff0c;剖析其中关键因素。 在本次线上研讨会中&#xff0c;Charles Lamanna 将分享他在增强商业运营方面的独到见解与实战策略&#xff0c;深度解读商业…...

Gemini 2.0模型更新:谷歌最新AI大模型全面开启智能时代

引言 2025年2月5日&#xff0c;谷歌人工智能实验室&#xff08;Google DeepMind&#xff09;发布了最新的Gemini 2.0模型系列更新&#xff0c;包括2.0 Flash、Flash-Lite和Pro实验版本。这些AI大模型的发布标志着人工智能技术在性能、效率和多模态能力上的进一步突破&#xff…...

前端布局与交互实现技巧

前端布局与交互实现技巧 1. 保持盒子在中间位置 在网页设计中&#xff0c;经常需要将某个元素居中显示。以下是一种常见的实现方式&#xff1a; HTML 结构 <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><m…...

乘 DeepSeek 之风,破工作传统之浪,驶向智能高效新航道⭐

引言&#xff1a;当工作场景遭遇认知革命 在数字化转型的浪潮中&#xff0c;人工智能正以指数级速度重塑职场生态。DeepSeek作为国内领先的认知智能平台&#xff0c;其技术突破已超越简单的信息检索工具&#xff0c;正在演变为职场人的"第二大脑"。本文将系统解构De…...

Java | RESTful 接口规范

关注&#xff1a;CodingTechWork 引言 作为一名程序员&#xff0c;制定清晰、一致且高效的 RESTful 接口规范对于团队的开发效率和项目的长期维护至关重要。本文将详细介绍 RESTful 接口的设计理念、请求方法分类、核心规范&#xff0c;以及正确和错误的示例&#xff0c;帮助团…...

ASN.1 格式与Java类转换

ASN.1&#xff08;Abstract Syntax Notation One&#xff09;是一种用于描述数据结构的标准&#xff0c;常用于网络协议和数据编码。要将ASN.1格式的数据与Java类进行转换&#xff0c;通常需要使用ASN.1编译器或库来生成Java类&#xff0c;并使用这些类来编码和解码ASN.1数据。…...

从零开始掌握Python人工智能:实战案例、学习路径与职业建议

想必大家最近也都关注了实时&#xff0c;最近AI及deep seek可谓是火遍全球啊!小米总裁还说&#xff1a;大学生应该赶紧学会使用人工智能&#xff0c;你越早学会&#xff0c;你就比其他人更有优势。我也这样的感觉&#xff0c;deep seek现在可以和很多软件运用&#xff0c;完成绝…...

Oracle 变更redo log文件位置

更改Oracle数据库的Redo log文件位置&#xff0c;可以按照以下步骤操作。 1.查询当前Redo log文件信息 select * from v$log; select * from v$logfile;通过查询结果可知Redo log文件放在/oradata/redofile 目录下。 2.拷贝redo log文件到新的位置/Data/redolog $cd /orada…...

C++ 中信号转异常机制:在磁盘 I/O 内存映射场景下的应用与解析

C 中信号转异常机制&#xff1a;在磁盘 I/O 内存映射场景下的应用与解析 在现代 C 开发中&#xff0c;处理底层系统信号与高层 C 异常之间的转换是一项极具挑战性但又至关重要的任务。尤其是在涉及磁盘 I/O 操作且使用内存映射文件时&#xff0c;这种转换显得尤为关键。本文将围…...

Compose笔记(四)--derivedStateOf

这一节了解一下derivedStateOf,它用于创建一个派生状态。派生状态是一种特殊的状态&#xff0c;它的值是根据其他状态计算得出的。当依赖的状态发生变化时&#xff0c;派生状态会自动重新计算。使用 derivedStateOf 的主要目的是优化重组&#xff0c;避免不必要的重组&#xff…...

Chirpy3D:用于创意 3D 鸟类生成的连续部分潜在特征

Chirpy3D框架可以将细粒度的2D图像理解提升至3D生成的全新境界。当前的3D生成方法往往只关注于重构简单的对象&#xff0c;缺乏细致的特征和创造性。Chirpy3D通过结合多视角扩散模型和连续的部件潜在空间&#xff0c;能够生成全新且合理的3D鸟类模型。该系统不仅能够保持细致的…...

viem库

viem是一个用于和以太坊进行交互的javascript库&#xff0c;它提供了简单的API进行智能合约的读取和写入操作&#xff0c;你可以使用它来与区块链上智能合约进行交互&#xff0c;查询链上数据等。 基本功能 1&#xff0c;创建公有客户端 createPublicClient 可以创建一个链接…...

【每日一题 | 2025】2.3 ~ 2.9

个人主页&#xff1a;GUIQU. 归属专栏&#xff1a;每日一题 文章目录 1. 【2.3】P8784 [蓝桥杯 2022 省 B] 积木画2. 【2.4】P8656 [蓝桥杯 2017 国 B] 对局匹配3. 【2.5】[ABC365D] AtCoder Janken 34. 【2.6】P8703 [蓝桥杯 2019 国 B] 最优包含5. 【2.7】P8624 [蓝桥杯 2015…...