cornerstoneTools自定义工具开发教程:4步从选择基类到添加Mixin
cornerstoneTools自定义工具开发教程4步从选择基类到添加Mixin【免费下载链接】cornerstoneToolsA framework for tools built on top of Cornerstone.项目地址: https://gitcode.com/gh_mirrors/co/cornerstoneToolscornerstoneTools 是构建在 CornerstoneJS 之上的医学影像工具框架为开发者提供了标注、测量、分割等丰富工具的底层能力。本文将带你快速掌握cornerstoneTools 自定义工具开发的完整流程——只需 4 步从选择基类、定义工具类到添加 Mixin 和注册启用即使是新手也能轻松写出属于自己的第一个影像交互工具。 先认识一下工具是怎么工作的在 cornerstoneTools 中每个工具Tool都继承自一个基类通过**模式Mode**决定如何响应用户操作。四种标准模式分别是模式行为说明Active激活渲染并响应用户输入可创建新标注/测量Passive被动渲染并被动响应可修改但不能创建数据Enabled启用只渲染不响应输入类似只读状态Disabled禁用默认不渲染、不可交互理解了模式再来看 4 步开发流程就顺理成章了。第 1 步选择工具基类3 选 1cornerstoneTools 提供 3 个基类供你选择选对基类是自定义工具开发的第一步也是最重要的一步BaseTool最基础的基类。适合本身不产生标注数据的工具如放大镜 MagnifyTool或者需要操作分割标签数据labelmap的分割工具Segmentation Tools。BaseAnnotationTool继承自 BaseTool。适合会在画布上创建、修改并显示自己的标注数据的工具如标尺工具 LengthTool。BaseBrushTool继承自 BaseTool。专为创建/修改/删除分割数据的工具设计如画笔工具 BrushTool也可扩展为自适应画笔、区域生长等工具。 简单判断法要画标注选BaseAnnotationTool要画分割选BaseBrushTool其余情况选BaseTool。详细对比可参考官方文档 choosing-a-base-class.md。第 2 步定义工具类并调用 super选好基类后用 PascalCase 命名类名并加Tool后缀例如HelloWorldTool然后继承基类。构造函数必须调用super()传入一个配置对象import csTools from cornerstone-tools; const BaseTool csTools.importInternal(base/BaseTool); export default class HelloWorldTool extends BaseTool { constructor(name HelloWorld) { super({ name, supportedInteractionTypes: [Mouse], // 支持 Mouse / Touch }); } }super()接收的配置项中name和supportedInteractionTypes是必填的另外还可以按需传入strategies多种操作策略的函数数组参考项目内置的 RotateTooldefaultStrategy多策略时的默认策略configuration灵敏度、标注渲染样式等可配置项mixins要混入的可复用行为下一步重点基类实现源码位于 BaseTool.js所有鼠标/触摸交互的虚拟方法如preMouseDownCallback、postMouseDownCallback都由它调度——你只需在类里定义对应方法事件分发器会在合适时机自动调用。第 3 步为工具添加 Mixin组合复用行为Mixin 是 cornerstoneTools 的核心设计通过组合而非继承把可复用的行为混入工具中。你只需在super()的mixins数组里按名称注册即可无需手动 importBaseTool 内部会自动处理super({ name, supportedInteractionTypes: [Mouse], mixins: [activeOrDisabledBinaryTool], });常用的内置 Mixin 有两种Mixin适用场景activeOrDisabledBinaryTool工具只在激活或禁用两种模式间切换没有自己的数据时enabledOrDisabledBinaryTool工具只在启用或禁用两种模式间切换如缩放比例尺工具此外工具还可以定义模式切换回调activeCallback、passiveCallback、enabledCallback、disabledCallback在模式变化时执行初始化或清理逻辑。内置 Mixin 源码在 src/mixins/ 目录下例如 activeOrDisabledBinaryTool.js。第 4 步注册工具并启用工具类写好、Mixin 加好后最后一步是把它注册到 cornerstoneTools 中再切换模式即可使用// 注册为 tool 类型 cornerstoneTools.register(tool, HelloWorld, HelloWorldTool); // 切换模式 cornerstoneTools.setToolActive(HelloWorld); cornerstoneTools.setToolDisabled(HelloWorld);register是统一的注册入口也支持注册模块module、Mixinmixin、第三方标注项等若一次注册多项可用registerSome。注册相关实现见 register.js 与 registerSome.js。⚠️ 小提示若同名工具已存在重复注册会输出警告并取消如需覆盖在register调用末尾追加参数true。 延伸阅读与关键文件到这里你已经走完了 cornerstoneTools 自定义工具开发的完整 4 步选基类 → 定义类 → 加 Mixin → 注册启用。想深入工具内部结构推荐按顺序阅读这些文档和源码自定义工具完整指南custom-tools/index.md工具解剖模式/策略/交互类型anatomy-of-a-tool/index.md基类介绍tool-types/index.mdMixin 说明tool-mixins/index.md模式切换 APIsrc/store/setToolMode.js动手试试吧从最小的工具开始逐步叠加标注数据、渲染与分割能力你就能在 cornerstoneTools 之上构建出功能完整的医学影像应用。【免费下载链接】cornerstoneToolsA framework for tools built on top of Cornerstone.项目地址: https://gitcode.com/gh_mirrors/co/cornerstoneTools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Oracle APEX安全实践指南:认证授权、漏洞披露与生产环境加固清单

Oracle APEX安全实践指南:认证授权、漏洞披露与生产环境加固清单

Oracle APEX安全实践指南:认证授权、漏洞披露与生产环境加固清单 【免费下载链接】apex Official Oracle APEX repo for sample code, starter apps, plug-ins, and more! #orclapex 项目地址: https://gitcode.com/gh_mirrors/apex3/apex Oracle APEX 是 Or…

2026/8/24 17:08:43 阅读更多 →
until-async新手教程:如何用[error, data]元组优雅处理async/await错误(完整指南)

until-async新手教程:如何用[error, data]元组优雅处理async/await错误(完整指南)

until-async新手教程:如何用[error, data]元组优雅处理async/await错误(完整指南) 【免费下载链接】until-async Gracefully handle Promises using async/await without try/catch. 项目地址: https://gitcode.com/gh_mirrors/un/until-as…

2026/8/24 10:57:50 阅读更多 →
用 slack-irc 定制消息外观:头像、用户名格式与表情转换详解

用 slack-irc 定制消息外观:头像、用户名格式与表情转换详解

用 slack-irc 定制消息外观:头像、用户名格式与表情转换详解 【免费下载链接】slack-irc Connects Slack and IRC channels by sending messages back and forth. 项目地址: https://gitcode.com/gh_mirrors/sl/slack-irc slack-irc 是一款免费开源的 Slack …

2026/8/22 15:32:22 阅读更多 →

最新新闻

AndroidAGP9.0升级之路

AndroidAGP9.0升级之路

AndroidAGP9.0升级之路 1.前言: 最近把Android Studio升级到了9.0,但是发现有不少问题,由于之前升级7.0、8.0都有很多经验,踩坑很多,所以这次升级很顺利,如果是7.0以下不建议直接升级,当然经验…

2026/8/25 12:54:14 阅读更多 →
微服务、APISIX 部署、对象存储与 ELK (二十)

微服务、APISIX 部署、对象存储与 ELK (二十)

微服务 微服务:拆分单体为多个独立服务,独立部署扩容,引入分布式难题。ZooKeeper:分布式协调工具,实现注册中心、配置管理、分布式锁、集群选主。Kafka:高吞吐消息队列,完成异步解耦、削峰填谷、…

2026/8/25 12:54:14 阅读更多 →
GNSS高级篇- 04 信号体制:4.1 各系统信号特征剖析

GNSS高级篇- 04 信号体制:4.1 各系统信号特征剖析

GNSS 高级篇 4 信号体制 4.1 各系统信号特征剖析 如果说卫星轨道是 GNSS 的"骨架",原子钟是 GNSS 的"心脏",那信号体制就是 GNSS 的"语言"——卫星用这种语言向地面广播自己的位置和时间,接收机则要听懂这种语…

2026/8/25 12:54:14 阅读更多 →
Havenlon 执行控制工程 II 04|时间为什么本身就是一种安全边界?

Havenlon 执行控制工程 II 04|时间为什么本身就是一种安全边界?

验证一项操作时,系统通常会检查身份是否有效、签名是否正确、审批是否存在、规则是否放行、设备状态是否正常。这些检查有一个共同点:它们看起来都在验证一组事实。而真正进入执行系统之后,几乎所有事实都需要再加一个维度——时间。因为一项…

2026/8/25 12:54:14 阅读更多 →
2026年7月承德市新房价格深度分析报告

2026年7月承德市新房价格深度分析报告

一、报告背景与数据说明本报告基于2026年7月承德市新房实际成交案例,结合区域分布、楼盘定位、户型结构与成交价格等多维度数据,对当前承德市新房市场进行深度分析。报告旨在为购房者、投资者及行业从业者提供真实、客观的市场参考。数据来源说明&#x…

2026/8/25 12:54:14 阅读更多 →
可信数据空间——2026城市可信数据空间实施路径报告【附全文阅读】

可信数据空间——2026城市可信数据空间实施路径报告【附全文阅读】

本报告由可信数据空间发展联盟联合多家头部机构编制,紧扣国家数据要素相关政策,搭建 “三阶段九大任务” 完整实施框架。系统梳理规划、建设、运营全流程落地路径,详解技术架构、数据融合、规则体系、商业模式与跨域互通方案,并汇集全国多地标杆案例,覆盖金融、医疗、交通…

2026/8/25 12:53:14 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述:从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”,这个名字对理工科学生来说,分量极重。每年,无数团队在三天三夜的时间里,为一个开放性问题绞尽脑汁,从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →