文章分类
C#
在现在这个 CAD 模式里,底图、轮廓、缺陷能对上,核心不是我自己去算三套坐标,而是: **三者都交给同一个 `DisplayEx` 控件,用同一套 ROI 和同一套坐标转换。** 具体是这样: 1. CAD 底图 - `ImageUtil.DisplayEx` 持有一个 vector `La...
阅读全文 →● 模板选择:始终从 ReportPluginTemplate 复制,即使你打算写简单报表。它自带完整的 MVVM 骨架、日期查询、SfDataGrid、CSV/XLSX 导出、以及独立的 BindableBase/RelayCommand — 你不需要的功能删掉比从零搭建快得多。 新建插...
阅读全文 →在一个不规则(尤其是凹多边形)的闭合多边形内,求能放下的最大圆的圆心,在计算几何和计算机图形学中,这个点通常被称为**“多边形极值点(Polylabel)”**或**“视觉中心”**。这个圆就是该多边形的**最大内切圆**。 需要特别注意的是,不能简单地使用多边形的“质心(Centroid)”或“...
阅读全文 →标签定位算法演进总结 尝试过的方法 1. Shoelace 质心(最初方法) 计算多边形面积加权质心:(1/(6A)) * Σ(xi+xj)*(xi*yj-xj*yi) ``` ┌─────────────┐ │ ● │ 圆形:顶点分布不均 → 质心...
阅读全文 →整个插件系统的核心就一个接口,宿主通过反射发现和加载,非常简单。 1. 唯一的入口:实现 IReportPlugin public interface IReportPlugin { string Id { get; } // 全局唯...
阅读全文 →`FileSystemWatcher` 的 `Created` 事件多次触发是一个常见问题,这通常不是代码错误,而是由 Windows 文件系统的底层机制和应用程序的保存方式导致的。例如,许多编辑器会先创建一个临时文件,然后再重命名或覆盖原文件,这个过程就会触发多次事件。 要解决这个问题,可以采用...
阅读全文 →Blog中的代码高亮
C#在 ASP.NET Core 博客中实现代码高亮,通常**不需要在后端(C#)做复杂的处理**,而是将这项工作交给**前端(浏览器)**来完成。 这是因为代码高亮本质上是对 HTML 标签添加 CSS 样式。结合你之前使用的 `Markdig` 解析方案,实现高亮非常简单。 目前业界最主流、效果...
阅读全文 →在 ASP.NET Core 中让 Blog 内容支持 Markdown,核心思路是**在后端进行解析渲染**或**在前端进行解析渲染**。考虑到 SEO(搜索引擎优化)和首屏加载速度,通常推荐在后端(C#)将 Markdown 转换为 HTML。 以下是基于 ASP.NET Core 实现 Ma...
阅读全文 →C#实现文件的原子写入
C#“临时文件 + 原子替换”的核心思想非常朴素:**永远不要直接修改原文件**。 它的逻辑是:先把新数据写入一个临时文件,等数据完全写入并关闭后,再利用操作系统的**重命名**功能,瞬间把临时文件“变”成原文件。 由于在同一个磁盘分区内,文件系统的“重命名/移动”操作是**原子性**的(要么瞬间完...
阅读全文 →在处理 C# 输出 CSV 文件时,**“防止生成不全”**的核心思路是:**不要直接在最终目标文件上进行写入。** 如果程序在写入中途崩溃、磁盘满了或网络断开,直接操作目标文件会导致文件损坏或内容缺失。以下是几种专业且稳健的解决方案: --- ### 1. 原子操作:先写临时文件,再重命名(...
阅读全文 →