设为首页收藏本站

 找回密码
 立即注册

只需一步,快速开始

搜索
查看: 79|回复: 9

结构体,你行你上

  [复制链接]
累计签到:18 天
连续签到:6 天
灌水成绩
3
134
2206
主题
帖子
积分

等级头衔

ID : 809

初级技术员

积分成就 测量币 : 2206
在线时间 : 0 小时
注册时间 : 2025-10-30
最后登录 : 2026-5-20

勋章
UID勋章测量学徒测量员
发表于 2026-4-16 17:04:12 来自手机 | 显示全部楼层 |阅读模式 IP:北京
我印象中结构体就是一个小透明,除了有些API必须用到,一般情况下很少被使用,它的用处一般理解为将多个关连变量打包到一起,提升代码的可读性,仅此而已,对我只写少量代码的人来说,基本不用。

    最近,我发现它在某些地方还是有些潜力的,比如,有一个一维数组,里面的数据间隔有规律,每小段数据为一组,这时可以用结构体来简化一些位置计算。
    举个容易理解的例子,比如我喜欢弄一些图片,但不喜欢WIA的低效,所以一般都是通过API,用IPictureDisp来获取像素颜色的数组,因为获取到的数组是一维byte数组,所以如果想要处理某一个或者某个范围的像素数据,必须先要根据像素行列坐标来换算出该像素的颜色值存在于一维数组的哪个位置,虽然只需要一个算式就能得到,但还是挺麻烦的,不直观。
    今天我尝试用结构体来代替一维数组来获取IPictureDisp的像素RGB数据,比较顺利,发现不再需要位置换算了,可以直接用行列值来锁定像素位置。附件是我用结构体Colour改写的截图程序,也保留了我原来方式的代码,用做对比。

注:我一直对API比较敬畏,基本就是照抄或仿照前人的实际案例改写来实现自己的目的,别人写的用字节数组获取API返回的数据,我就不会考虑其他可能性,实际测试后发现有些API返回或者要求的数据,并不一定是固定结构的,也许底层实现就是用的CopyMemory,只要不溢出就行。顺便说下,用CopyMemory改变数组维度也能实现类似功能。

结构体改写截图示例.zip
累计签到:19 天
连续签到:9 天
灌水成绩
0
182
13234
主题
帖子
积分

等级头衔

ID : 592

高级技术员

积分成就 测量币 : 13234
在线时间 : 0 小时
注册时间 : 2026-4-8
最后登录 : 2026-5-22

勋章
UID勋章测量学徒测量员
发表于 2026-4-30 09:33:29 | 显示全部楼层 IP:美国
终于找到一篇讲明白的了,谢谢博主。
回复

使用道具 举报

累计签到:20 天
连续签到:9 天
灌水成绩
0
216
17363
主题
帖子
积分

等级头衔

ID : 525

高级技术员

积分成就 测量币 : 17363
在线时间 : 0 小时
注册时间 : 2025-10-10
最后登录 : 2026-5-19

勋章
UID勋章测量学徒测量员
发表于 2026-5-1 01:10:33 | 显示全部楼层 IP:广东东莞
博主态度认真,文章质量很高。
回复

使用道具 举报

累计签到:23 天
连续签到:7 天
灌水成绩
0
165
13308
主题
帖子
积分

等级头衔

ID : 561

高级技术员

积分成就 测量币 : 13308
在线时间 : 0 小时
注册时间 : 2026-4-10
最后登录 : 2026-5-23

勋章
UID勋章测量学徒测量员
发表于 2026-5-1 01:21:43 | 显示全部楼层 IP:广东东莞
思路很清晰,逻辑很顺。
回复

使用道具 举报

累计签到:21 天
连续签到:14 天
灌水成绩
1
170
13770
主题
帖子
积分

等级头衔

ID : 578

高级技术员

积分成就 测量币 : 13770
在线时间 : 0 小时
注册时间 : 2026-3-12
最后登录 : 2026-5-19

勋章
UID勋章测量学徒测量员
发表于 2026-5-1 01:41:59 | 显示全部楼层 IP:广东东莞
排版舒服,阅读体验很好。
回复

使用道具 举报

累计签到:20 天
连续签到:9 天
灌水成绩
0
216
17363
主题
帖子
积分

等级头衔

ID : 525

高级技术员

积分成就 测量币 : 17363
在线时间 : 0 小时
注册时间 : 2025-10-10
最后登录 : 2026-5-19

勋章
UID勋章测量学徒测量员
发表于 2026-5-4 17:00:01 | 显示全部楼层 IP:北京
逻辑很清晰,一步步跟着走就行。
回复

使用道具 举报

累计签到:20 天
连续签到:9 天
灌水成绩
0
216
17363
主题
帖子
积分

等级头衔

ID : 525

高级技术员

积分成就 测量币 : 17363
在线时间 : 0 小时
注册时间 : 2025-10-10
最后登录 : 2026-5-19

勋章
UID勋章测量学徒测量员
发表于 2026-5-9 02:18:35 | 显示全部楼层 IP:广东东莞
知识点梳理得很清楚。
回复

使用道具 举报

累计签到:20 天
连续签到:4 天
灌水成绩
1
28
2521
主题
帖子
积分

等级头衔

ID : 1067

初级技术员

积分成就 测量币 : 2521
在线时间 : 0 小时
注册时间 : 2026-4-13
最后登录 : 2026-5-16

勋章
UID勋章测量员
发表于 2026-5-11 19:23:20 | 显示全部楼层 IP:欧洲和中东地区
适合快速入门和查漏补缺。
回复

使用道具 举报

尚未签到

灌水成绩
3
10
913
主题
帖子
积分

等级头衔

ID : 1269

测量学徒

积分成就 测量币 : 913
在线时间 : 0 小时
注册时间 : 2025-12-18
最后登录 : 2026-5-21

勋章
UID勋章测量学徒
发表于 7 天前 | 显示全部楼层 IP:美国
沙发!沙发!
回复

使用道具 举报

尚未签到

灌水成绩
0
2
199
主题
帖子
积分

等级头衔

ID : 1378

测量员

积分成就 测量币 : 199
在线时间 : 0 小时
注册时间 : 2025-12-4
最后登录 : 2026-4-20

勋章
UID勋章测量学徒
发表于 7 天前 | 显示全部楼层 IP:美国
知识点梳理得很清楚。
回复

使用道具 举报

快速回复换一批
好贴支持!
顶顶顶
路过留名
强无敌
楼主好人一生平安
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|精密测量技术论坛 ( 桂ICP备2026007449号-1 )|网站地图

GMT+8, 2026-5-23 11:05 , Processed in 0.286963 second(s), 41 queries .

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