自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ceffans的博客

鸟随鸾凤腾飞远,人随贤良品自高。

  • 博客(59)
  • 资源 (2)
  • 收藏
  • 关注

原创 PDF文档中表格以及形状解析-后续处理(长线段根据交点打断成短线段)

使用线段相交的几何算法来检测两条线段是否相交。计算交点坐标,如果相交,则返回交点。给定n条线段,要求根据它们的交点将线段打断,生成新的线段集合。处理完得到小线段的数量为24条小线段。

2025-03-07 12:18:54 452

原创 SOUI基于Zint生成EAN码

包括EAN-2、EAN-5、EAN-8和EAN-12码。此外,可以使用 + 字符将 EAN-2 和 EAN-5 附加符号添加到 EAN-8 和 EAN-13 符号中,就像 UPC 符号一样。EAN-13码的绘制基本与EAN-8相同,也是分出长短条再分别绘制。比如:1234567+12(EAN8+EAN2)该数据在生成时是会生成一个EAN-8码跟EAN-2码在绘制时分开绘制即可。EAN-2、EAN-5码可作为EAN-8、EAN-13码的补充码出现。对于EAN-2、EAN-5码以及组合码都可做相似的处理。

2025-03-03 10:30:43 331

原创 PDF文档中图片解析

以上即为使用pdfium解析PDF文档中图片数据相关的代码。在实际测试中在word中插入的图片尺寸比转成PDF中的图片尺寸小。但是读到的图片尺寸跟PDF文档中是一致的。我们在做PDF文档解析时有时需要解析PDF文档中的图片数据。跟解析文本类似的常见的解决方案也是两种。文档解析跟ocr技术处理。下面我们来看看使用文档解析的方案来做PDF文档中的图片解析(使用pdfium库)。

2025-02-28 15:18:05 734

原创 PDF文档中表格以及形状解析

所以我们在进行文本表格关联时只需要判断文本位置的那个点是否在表格的多边形内即可,如果在多边形内则说明PDF中该文本为表格中该单元格的数据。大致的处理思路是将长线段打断为短线段然后再将短的线段组合成一个个的小多边形,根据多边形的上下左右共边关系生成一个表格结构。通过上述代码我们获取Path对象中的数据即可拿到表格的线条,需要的注意的时如果只拿表格的线的话需要对nPoints做判断,如果对象只有两个点则为表格的线。这里拿到的线是整体的线。在pdfium库中在解析表格时是将表格的线解析成单独的对象。

2025-02-28 13:00:00 753

原创 SOUI基于Zint生成UPC码

UPC 码(Universal Product Code,通用产品代码)是一种广泛使用的条形码系统,主要用于零售商品的标识和追踪。有两种主要格式:UPC-A 和 UPC-E。3跟偶数位的值相加,10减去得到的值的个位数即为校验码值(如果值为10则校验码为0)。UPC-A跟UPC-E的算法一样,从右往左将奇数位数据值。校验码:10 - 60%10=10 校验码为0。偶数位的和为:0+8+6+4+2=20。校验码为:10 - 98%10 = 2。偶数位的加权和:6+4+2=12。奇数位的加权和为:1。

2025-02-24 16:13:13 496

原创 PDF文档中文本解析

这里我们主要说一下文档读取解析的方案,现在常用的解析库有mupdf、pdfium、Aspose等第三方库来处理。其中mupdf、pdfium为开源、免费的。Aspose是一款收费的商业库。在实际使用中发现使用mupdf解析文本时每一个block即为一段落的文本。但是在pdfium中获取的文本为整页中的所有文本,如果要划分段落则需要使用者自己根据字符的位置信息自己做归类处理。一是通过文档结构读取解析,另一种是通过ocr技术处理。常用的PDF文档解析解决方案有两种。下边我们分别说一说各种库的使用。

2025-02-20 13:30:47 618

原创 Archicad插件开发-创建库容器文件(lcf文件)

在做AC二开时,我们有时写的libpart并不是单个的库文件,而是做成一个图库文件夹来组织的。这时我们的图库文件每次都需要加载,而且加载的图库文件时以绝对路径加载的。然后将该lcf文件复制到ac安装目录的图库文件夹中即可自动加载。将创建好的lcf文件放到软件安装目录下的图库文件夹中我们在项目中就可以使用我们lcf文件中的GDL对象了。选中我们需要被处理的图库对象文件夹然后创建,这样我们就可以将我们的图库文件保存为lcf文件了。在创建lcf文件之前,我们先将我们所有的图库文件添加到AC中。

2025-02-19 09:32:03 202

原创 Archicad插件开发-右侧树操作事件

在AC中如果我们需要知道右侧项目导航、视图映射、图册、发布树节点增、删、改、点击等事件时,则可以设置项目导航事件回调函数来处理。树操作类型由API_NotifyViewEventID枚举所定义。以下是更改打开页面的设置下方页面设置相关代码。

2025-02-19 09:29:02 179

原创 Archicad插件开发-项目事件回调

在AC中如果我们需要知道当前楼层切换、项目关闭、打开等事件,则可以设置项目事件回调函数来处理。事件类型由API_NotifyEventID枚举所定义。

2025-02-19 09:27:10 153

原创 Archicad插件开发-元素更改回调

在AC中如果我们需要知道元素何时被更改、删除或其他变动则可以通过设置元素观察者回调函数来处理。另外除了上述的代码外我们还需要将希望被监测的元素guid附加到观察者。元素更改类型由API_ElementDBEventID枚举所定义。

2025-02-19 09:25:34 422

原创 Archicad插件开发-获取楼层信息

一般在项目中我们需要获取AC项目中的楼层设置信息。元素的楼层索引保存于元素header的floorInd中。同时也可将元素根据不同楼层归类。

2025-02-19 09:22:46 194

原创 Archicad插件开发-获取右侧树形结构数据

拿到不可再分的所有节点数据之后我们可以根据节点类型将节点进行分类处理。右侧树形结构的类型由API_NavigatorMapID结构控制。其他比如视图映射等可参考项目树形结构图类似的处理方式。下边是获取项目树中无子节点的节点。先获取项目树状图下边的子节点。

2025-02-19 09:20:07 206

原创 Archicad插件开发-GDL自定义对象的创建以及对象中自定义参数的修改

第二步:更改对象默认参数的需求则按以下方式处理。一般更改对象参数的方式有两种,一种是先设置参数再创建对象;另外一种则是先创建之后再设置参数(guid传递对应对象的guid)此处获取的libPart.index即为我们自定义的GDL对象的索引。通过接口ACAPI_LibPart_Search获取对象。第一步:我们先要获取自定义对象(GDL创建)的索引。如果不需要更改对象参数,则跳过第二步的设置参数即可。参数即为GDL中定义的一些参数。

2025-02-19 09:16:12 367

原创 Archicad插件开发-非模态窗口使用教程

跟模态窗口一样我们在grc文件中定义对话框资源。控件以及控件事件处理请参考模态窗口处理。

2025-02-19 09:09:00 237

原创 Archicad插件开发-模态窗口使用教程

首先我们让我们的事件处理类继承按钮事件类,我这里是将事件处理跟窗口类放在一起了所以我们的窗口类继承按钮事件处理类。运行程序我们会看到我们的窗口上会出现两个按钮,但是点击按钮没有任何反应,这是因为我们没为按钮添加响应。GDLG为窗口描述,里边定义窗口的id、类型、位置信息、title以及窗口所包含控件的位置信息等数据。首先我们在grc文件中的我们定义的窗口中添加两个按钮“OK”、“Cancel”。下边我们再介绍介绍如何在窗口上添加控件,以及控件事件的响应。这样窗口中的OK跟Cancel按钮的事件将会被触发。

2025-02-19 09:06:01 338

原创 Archicad插件开发-菜单使用教程

menuPosCode 设置菜单的parent-设置该菜单是那个cmd的子项具体请看文档,如果想要不依附与任何cmd菜单做成单独的cmd则该参数设置为MenuCode_UserDef。-MenuFlag_InsertIntoSame //文档说是将不同add-ons插入到相同的submenu中,未测试。如果需要分割线则将分割线后的一项的menuFlag设置为MenuFlag_SeparatorAfter即可。调用ACAPI_Register_Menu函数(注册菜单)

2025-02-19 09:00:26 683

原创 Archicad插件开发-代码框架

插件注册服务(菜单命令、文件类型、其他插件调用的cmd、工具箱或库子类型等)。也可获取应用程序的其他可用性信息,可根据此信息调整注册操作。插件加载时调用该方法。可以在此初始化全局变量以及动态内存块,也可在此设置各种通知回调。项目搭建基本就是从官网下载二开的SDK然后安装,再在VS中创建项目。具体可参考文档或者其他博主的博客。插件的主入口之一,用以检查运行环境(版本等信息)。返回是否可在给定条件下运行。用以释放数据,在插件卸载之前调用。

2025-02-19 08:51:52 268

原创 SOUI基于Zint生成Code 39码

标准Code 39适用于编码长度较短且不需要复杂字符的字符串,Extended Code 39适用于需要编码更多字符和更复杂字符串的场景。在Zint中BARCODE_CODE39、BARCODE_EXCODE39是 Code 3 of 9(Code 39)条形码的不同变体。

2025-02-13 14:15:08 513

原创 SOUI基于Zint生成Code 2 of 5码

在 Zint 中,BARCODE_C25STANDARD、BARCODE_C25INTER、BARCODE_C25IATA、BARCODE_C25LOGIC 和 BARCODE_C25IND 是 Code 2 of 5(Code 25)条形码的不同变体。这些变体在编码规则、字符集和应用场景上有所不同。Code 2 of 5(Code 25)是一种基于宽条和窄条的条形码,每个字符由 5 个条组成,其中 2 个是宽条,3 个是窄条。

2025-02-13 14:13:10 929

原创 SOUI基于Zint生成Code11码

Code 11 是一种高密度的数字条形码,主要用于标识电信设备和电子元件。它的名称来源于其能够编码 11 种字符:数字 0-9 和连接符 -。Code 11 是一种双向可读的条形码,支持校验位以提高数据准确性。在使用BARCODE_CODE11码制生成code 11码时可指定其是否校验。默认是以两位校验码的设置生成。故而如果我们需要更改其校验规则只需在生成时更改option_2参数的值即可。在绘制文本时根据如果需要将校验码绘制出来则将校验码追加在原始数据后进行绘制。

2025-02-13 14:10:49 421

原创 SOUI基于Zint生成Code128码

在 Zint 中,BARCODE_CODE128、BARCODE_CODE128AB、BARCODE_CODE128B 和 BARCODE_HIBC_128 是不同类型的 Code 128 条形码变体。在使用BARCODE_CODE128码制生成code 128码时可根据特殊的处理强制指定子集。:HIBC(Health Industry Bar Code)标准的 Code 128 条形码。:Code 128 的变体,仅使用 Code 128-A 和 Code 128-B 子集。

2025-02-13 14:09:04 576

原创 条形码最优尺寸计算

在印刷行业中,条码的尺寸直接影响其可读性、扫描效率。条码尺寸过小可能导致扫描设备无法正确识别,尤其是低分辨率的扫描器。条码尺寸过大可能超出扫描设备的识别范围,导致部分条码无法被读取。因此为了提高条码的扫描效率跟准确率我们需要去计算条码的最优尺寸。下边我们以Code 128为例详细实现一下条码最优尺寸的计算。以上即为128码最优尺寸的计算规则。

2025-02-13 14:02:31 256

原创 C++基于lcms2-2.16做RGB转CMYK的分色处理

首先我们下载源码:https://github.com/mm2/Little-CMS。然后直接打开项目编译库,我这边编译的lcms2_static静态库。再然后将库链接至我们的项目中,包含库头文件。转换后的结果为:0, 0.91, 1, 0。

2025-01-17 10:16:19 321

原创 C++将32位深BMP图片转为8位深

【代码】C++将32位深BMP图片转为8位深。

2025-01-03 08:11:26 213

原创 在soui4中使用单个的图片设置按钮的多状态图

资源的引入跟其他的图片没任何区别,只需将图片添加到IMG或者PNG节点下即可。然后在skin.xml中将单个的文件组成一个类似于imglist的图片。这样就可以在布局xml中跟使用imglist一样使用了。在uires.idx中做如下处理。

2024-12-24 13:30:57 233

原创 C++将32位深BMP图片转为1位深

然后我们对灰度图进行处理将其处理为1位深(1个字节存储8个像素点)pixels1即为1位深的像素数据。

2024-09-23 13:13:48 345

原创 C++将32位深图片处理成灰度图

计算公式为:灰度 = RED * 0.299 + GREEN * 0.587 + BLUE。拿到像素值后对像素做灰度化处理,根据RGB颜色的权重计算灰度值。

2024-09-19 12:49:23 284

原创 C++实现BMP图像旋转90度

先定义两个结构,BMP文件头结构跟BMP信息头结构。另外如果嫌弃处理速度慢也可使用SSE算法优化处理。拿到像素后之后做旋转操作:此处按32位深处理。

2024-09-19 12:38:57 300

原创 C++实现多边形旋转

【代码】C++实现多边形旋转。

2024-09-18 15:44:21 168

原创 使用soui4绘制五边形跟五角星

五边形填充跟五角星填充一样,不止这些其他的填充都一样。主要就是创建一个渐变画刷然后填充。五角星只是在五边形的基础上算出连接点再将这些点连起来绘制一个多边形。绘制的最核心的部分就是定位点的计算,然后将点连起来绘制一个多边形。

2024-09-18 14:44:50 461

原创 判断线是否相交、判断点是否在线上、求线相交交点

【代码】判断线是否相交、判断点是否在线上、求线相交交点。

2024-09-15 10:53:56 232

原创 使用soui4实现一个Banner控件

Demo代码:https://github.com/JeanPenty/BannerDemo。

2024-09-14 13:56:15 271

原创 soui4实现窗口3D旋转

【代码】soui4实现窗口3D旋转。

2024-09-12 15:58:29 409

原创 使用soui4实现一个拾色器控件

在solider控件更改滑块位置时需要通知拾色器控件。

2024-09-12 10:52:05 853

原创 RGB与CMYK互转

这种处理方式的不足之处是RGB与CMYK在互转过程中会损失精度。

2024-09-11 16:08:45 372

原创 soui4中拓展spinButton控件使其支持double类型或者其他类型

主要的地方就是先获取按下的状态根据自身的业务做加减操作或者递增递减操作。将spin控件点击事件跟edit关联起来。2、在布局中使用控件。

2024-09-11 12:47:33 268

原创 使用soui4实现镜像绘制

【代码】使用soui4实现镜像绘制。

2024-09-10 10:48:07 368

原创 使用Zlib库进行多文件或者多文件夹的压缩解压缩

zlib库可在git上自己clone下来然后使用cmake工具生成解决方案,编译、生成zlib二进制文件。

2024-09-06 14:18:05 827

原创 使用soui4实现弧形文本的绘制

弧形文本的绘制跟正常文本绘制有不同的地方是弧形文本需要根据弧度范围内一个一个字符的绘制。

2024-09-06 13:54:42 198

原创 使用soui4实现一个打印排版软件(十四)将排版的图像导出

【代码】使用soui4实现一个打印排版软件(十四)将排版的图像导出。

2024-09-04 14:19:10 584

Turn3D-Demo

Turn3D-Demo

2024-09-12

Snapshot截图工具

C++实现截图工具,支持矩形、椭圆、箭头、涂鸦、马赛克、文本以及操作回撤等功能,启动即可截图,一次启动后台运行使用快捷键Ctrl+Shift+A即可唤醒截图

2018-07-18

模仿QQ截图工具

模仿QQ实现截图工具,基本实现QQ所有功能 实现截图,以及对截图的各种操作

2018-08-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除