QQ登录

只需一步,快速开始

查看: 752|回复: 3
收起左侧

零基础学 CorelDRAW CPG 教程-Part03 C++ 编程 绘制圆形和矩形

[复制链接]
累计签到:207 天
连续签到:5 天
发表于 2024-8-22 10:11:10 | 显示全部楼层 |阅读模式
先决条件: 搭建好编译环境,了解开放大概,可以先看 教程在本站的链接如下
零基础学 CorelDRAW CPG 插件开发教程-Part01 MSVC2022 编译环境
https://www.52cnp.com/thread-21975-1-1.html


零基础学 CorelDRAW CPG 插件开发教程-Part02 C++ 编程傻瓜入门
https://www.52cnp.com/thread-22629-1-1.html


零基础学 CorelDRAW CPG 插件开发教程-Part03  C++ 编程 绘制圆形和矩形
自然是本教程帖子, CDR插件绘制圆形和矩形_源码包.zip   零基础学 CorelDRAW CPG 教程-Part03 C++ 编程 绘制圆形和矩形{tag}(1) CDR插件绘制圆形和矩形_源码包.zip (120.13 KB, 售价: 99 印币)
定价 99 金币不过分吧

零基础学 CorelDRAW CPG 教程-Part03 C++ 编程 绘制圆形和矩形{tag}(2)

首先我们来看源码第一版: test 函数
  1. bool test(corel* cdr){
  2.     cdr->ActiveDocument->Unit = cdrMillimeter;
  3.     double x, y;

  4. //  IVGShapePtr ActiveShape;
  5.     auto s = cdr->ActiveShape;
复制代码

首先定义这个 测试函数,返回值为 bool逻辑真假,参数是  corel* cdr  ,前面文章讲过 是一个全局指针,绑定到 CorelDRAW插件的app指针上,相当于从水管上接个龙头,可以自由调用 CDR的资源了。
再接下来 一行, 设置 代码中的文档档位为 mm, 定义 x,y 两个变量,可以去点的 坐标。
再使用 auto s 把 s 指向,文件中选择的物件中第一个物件。 使用 auto 是为了傻瓜,我们还是要清楚 IVGShapePtr ActiveShape; 是这个物件的定义,这里auto表示的类型是   IVGShapePtr ,是表示 Shape物件的指针。
你听懂了吗,如果不懂没事,反正就是 Ctrl +C +V 的事,直接用 auto就行了。


零基础学 CorelDRAW CPG 教程-Part03 C++ 编程 绘制圆形和矩形{tag}(3)


  1.     for(auto i = 0; i < s->DisplayCurve->Nodes->Count; i++){
  2.         auto n = s->DisplayCurve->Nodes->Item[i+1];   

  3.         x = n->PositionX;  
  4.         y = n->PositionY;
  5.         printf("%f, %f\n", x, y);

  6.         auto sy = cdr->ActiveLayer->CreateEllipse2(x, y, 5, ZERO_4PC);
  7.         sy->Outline->Color->RGBAssign(255, 0, 0);

  8.         auto sj = cdr->ActiveLayer->CreateRectangle2(x, y, 10, 10, ZERO_4PC);
  9.         sj->Outline->Color->RGBAssign(0, 255, 0);
  10.         sj->PutCenterX(x);
  11.         sj->PutCenterY(y);

  12.     }
复制代码

再来解读 正式的功能代码:
for 语句是基本所有编程语言都有的,使用循环来做批量的事情,我们这个代码就是遍历我们选择物件的所有节点,在所有节点位置处,画圆形标记,话矩形标记。
s-DisplayCurve-Nodes-Count 这个指针操作用来的得到 s物件的虚拟副本上所有节点的计数,如果你熟悉使用VBA使用类似的操作,你应该看的懂,如果你还不懂VBA里这样操作,当我没说。
接下来 auto n 就是定义一个临时变量 n 用来表示 节点 Node,分别绑定每一个节点。

再接下来,使用 x y 变量得到节点的坐标,使用 printf 打印出来了,我们这次写的控制台程序  app.exe 所以是可以显示后台的信息的。

auto sy = cdr-ActiveLayer-CreateEllipse2(x, y, 5, ZERO_4PC);
为了能验证我们的得到数据是否正确,所以,我就要在得到每个点上 画圆标记了。
如上图所示,我把 CreateEllipse2 这个绘制圆形的函数 也放到代码里,使用注释代码,方便学习这个函数的参数使用。
建立圆形函数原型:  IVGShapePtr IVGLayer::CreateRectangle2 我们猜一猜 是在CDR图层上操作的,
所以使用时按 cdr-ActiveLayer-CreateEllipse2 ( ) 这样写,要加上当前层的指针。
括号中的参数,7个数字,我们只要前面三 x , y, 5,后面全填0好了。 数字 5 表示 圆半径, 后面4个0 我就用英文 #define ZERO_4PC 0, 0, 0, 0 替代了,不懂你可以问AI


auto sj = cdr-ActiveLayer-CreateRectangle2(x, y, 10, 10, ZERO_4PC);  的意思。
以下省略 1024字 ........





评分

参与人数 1印币 +20 活跃值 +1 技术 +1 收起 理由
华印客服 + 20 + 1 + 1 感谢分享与探讨,华印有你更精彩!.

查看全部评分

华印网相关搜索

1 赠人玫瑰,手有余香!如单纯感谢,请送花!凡是以文字形式感谢,即被视为水帖,会扣币处理! 鲜花榜单
  • +1

    对你表示感谢!

累计签到:207 天
连续签到:5 天
 楼主| 发表于 2024-8-22 10:50:23 | 显示全部楼层
零基础学 CorelDRAW CPG 教程-Part03 C++ 编程 绘制圆形和矩形{tag}(4)

学习 C/C++ 编程,我们可以借助于 AI GPT 机器人来帮我们写代码和读代码。
我们可以让AI,把复杂的画圆形和画矩形,提取成单独函数,然后使用的时候就简单调用一下。
然后 功能函数了,只要简单调用,代码就比较清爽了,比如图片中 把画圆形和化矩形分别包装了2个参数。
  1. IVGShapePtr MakeEllipse(corel* cdr, double x, double y, double r);
  2. IVGShapePtr MakeEllipse(corel* cdr, IVGShapePtr s, double r);
  3. IVGShapePtr MakeRectangle(corel* cdr, double x, double y, double w, double h);
  4. IVGShapePtr MakeRectangle(corel* cdr, IVGShapePtr s, double w, double h);
复制代码
MakeEllipse 画圆函数,可以使用 1.创建一个指定位置和半径的椭圆  或者 2.以现有形状为中心创建一个指定半径的椭圆
MakeRectangle  画矩形函数,可以使用 1.创建一个指定位置和尺寸的矩形 或者 2. 以现有形状为中心创建一个指定尺寸的矩形

零基础学 CorelDRAW CPG 教程-Part03 C++ 编程 绘制圆形和矩形{tag}(5)
如图, 使用同一个函数名,使用不同的参数画圆

auto sy = MakeEllipse(cdr, x, y, 5);
auto sy = MakeEllipse(cdr, s, 10);



使用 C/C++ 写代码,你可以借助强大的 AI GPT,可以写很多很好的代码。你可以让他解释代码,慢慢摸索...

回复 支持 反对 送花

使用道具 举报

累计签到:270 天
连续签到:1 天
发表于 2024-11-14 15:23:06 | 显示全部楼层
太高深了看不懂零基础学 CorelDRAW CPG 教程-Part03 C++ 编程 绘制圆形和矩形{tag}(6)
回复 支持 反对 送花

使用道具 举报

累计签到:48 天
连续签到:1 天
发表于 2024-11-15 16:20:18 | 显示全部楼层
太高深了 我也看不懂
回复 支持 反对 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

关闭

注意注意注意:必看上一条 /1 下一条

华印网 - 华印社区
Share More 周一至周日:09:00 - 21:00
华印网旗下的设计印刷制作类专业技术站点
请勿发布违反国家法律法规的内容,会员观点不代表本站立场
企鹅群号:119572101

华印网汇集印前印后技术、PDF拼版、防伪包装、数码印刷、合版印刷、图文设计、平面设计、数码印刷及CTP等最新印刷技术,提供软件汉化、插件汉化、cdr插件、ai插件、ps插件、pdf插件、印刷流程、ctp输出、印刷软件、印能捷、esko、CorelDRAW、InDesign、Illustrator、CTP、CDR以及PDF软件下载的综合性印刷论坛社区!

Powered by Discuz! X3.4 © 2001-2021,Tencent Cloud.

站点地图|小黑屋|手机版|Archiver|华印 ( 粤ICP备19020152号-1 )

GMT+8, 2024-12-22 13:43 , Processed in 0.021017 second(s), 24 queries , Gzip On, Yac On.

快速回复 返回顶部 返回列表