零基础学 CorelDRAW CPG 教程-Part03 C++ 编程 绘制圆形和矩形
先决条件: 搭建好编译环境,了解开放大概,可以先看 教程在本站的链接如下零基础学 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 插件开发教程-Part03C++ 编程 绘制圆形和矩形
自然是本教程帖子, CDR插件绘制圆形和矩形_源码包.zip
定价 99 金币不过分吧
首先我们来看源码第一版: test 函数
bool test(corel* cdr){
cdr->ActiveDocument->Unit = cdrMillimeter;
double x, y;
//IVGShapePtr ActiveShape;
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就行了。
for(auto i = 0; i < s->DisplayCurve->Nodes->Count; i++){
auto n = s->DisplayCurve->Nodes->Item;
x = n->PositionX;
y = n->PositionY;
printf("%f, %f\n", x, y);
auto sy = cdr->ActiveLayer->CreateEllipse2(x, y, 5, ZERO_4PC);
sy->Outline->Color->RGBAssign(255, 0, 0);
auto sj = cdr->ActiveLayer->CreateRectangle2(x, y, 10, 10, ZERO_4PC);
sj->Outline->Color->RGBAssign(0, 255, 0);
sj->PutCenterX(x);
sj->PutCenterY(y);
}
再来解读 正式的功能代码:
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字 ........
学习 C/C++ 编程,我们可以借助于 AI GPT 机器人来帮我们写代码和读代码。
我们可以让AI,把复杂的画圆形和画矩形,提取成单独函数,然后使用的时候就简单调用一下。
然后 功能函数了,只要简单调用,代码就比较清爽了,比如图片中 把画圆形和化矩形分别包装了2个参数。
IVGShapePtr MakeEllipse(corel* cdr, double x, double y, double r);
IVGShapePtr MakeEllipse(corel* cdr, IVGShapePtr s, double r);
IVGShapePtr MakeRectangle(corel* cdr, double x, double y, double w, double h);
IVGShapePtr MakeRectangle(corel* cdr, IVGShapePtr s, double w, double h);MakeEllipse 画圆函数,可以使用 1.创建一个指定位置和半径的椭圆或者 2.以现有形状为中心创建一个指定半径的椭圆
MakeRectangle画矩形函数,可以使用 1.创建一个指定位置和尺寸的矩形 或者 2. 以现有形状为中心创建一个指定尺寸的矩形
如图, 使用同一个函数名,使用不同的参数画圆
auto sy = MakeEllipse(cdr, x, y, 5);
auto sy = MakeEllipse(cdr, s, 10);
使用 C/C++ 写代码,你可以借助强大的 AI GPT,可以写很多很好的代码。你可以让他解释代码,慢慢摸索...
太高深了看不懂:) 太高深了 我也看不懂
页:
[1]