样式修改

This commit is contained in:
duanhao 2025-08-11 17:49:31 +08:00
parent 61f6626610
commit cdbfb491b8
2 changed files with 51 additions and 9 deletions

View File

@ -32,11 +32,53 @@ export const paintNodeFunction = function (ctx, onlyShape) {
//按节点类型绘制节点边框 //按节点类型绘制节点边框
if (this.properties.type != "normal") { if (this.properties.type != "normal") {
ctx.beginPath() // ctx.beginPath()
ctx.arc(0, 0, this.radius + 6, 0, Math.PI * 2) // ctx.arc(0, 0, this.radius + 6, 0, Math.PI * 2)
ctx.lineWidth = 8 // ctx.lineWidth = 8
ctx.strokeStyle = `rgba(${this.fillColor},${this.alpha * 0.4})` // ctx.strokeStyle = `rgba(${this.fillColor},${this.alpha * 0.4})`
ctx.stroke() // ctx.stroke()
// 半径 & 样式参数(按需调整)
// ===== 三层:实心圆 + 半透明边框 + 外圈虚线 =====
const rFill = this.radius; // 实心圆半径
const ringWidth = 15; // 半透明边框的宽度
const ringGap = 0; // 实心与半透明边框之间的间隙(需要留缝就调大)
const outerGap = 0; // 半透明边框与虚线之间的间隙
const dashWidth = 2; // 虚线线宽
const dash = 2, gap = 4; // 虚线样式
const ringAlphaFactor = 0.5; // 半透明边框的相对透明度(相对于 this.alpha
// 1) 中间实心圆(填充)
ctx.save();
ctx.beginPath();
ctx.arc(0, 0, rFill, 0, Math.PI * 2);
ctx.fillStyle = `rgba(${this.fillColor}, ${this.alpha})`;
ctx.fill();
ctx.restore();
// 2) 同色半透明边框(描边,不是挖空)
ctx.save();
ctx.beginPath();
const rRing = rFill + ringGap + ringWidth / 2;
ctx.arc(0, 0, rRing, 0, Math.PI * 2);
ctx.lineWidth = ringWidth;
ctx.setLineDash([]); // 确保这里是实线
ctx.strokeStyle = `rgba(${this.fillColor}, ${this.alpha * ringAlphaFactor})`;
ctx.stroke();
ctx.restore();
// 3) 外圈虚线(同色)
ctx.save();
ctx.beginPath();
const rDash = rRing + ringWidth / 2 + outerGap + dashWidth / 2;
ctx.arc(0, 0, rDash, 0, Math.PI * 2);
ctx.lineWidth = dashWidth;
ctx.setLineDash([dash, gap]);
ctx.lineCap = 'round';
ctx.strokeStyle = `rgba(${this.fillColor}, ${this.alpha})`;
ctx.stroke();
ctx.setLineDash([]); // 清理,避免影响后续绘制
ctx.restore();
} else { } else {
ctx.beginPath() ctx.beginPath()
ctx.arc(0, 0, this.radius + 8, 0, Math.PI * 2) ctx.arc(0, 0, this.radius + 8, 0, Math.PI * 2)

View File

@ -46,7 +46,7 @@ const defaultConfig = {
textOffsetY: 10 textOffsetY: 10
}, },
shape: "circle", shape: "circle",
size: 60, size: 15,
borderColor: "200,50,50", borderColor: "200,50,50",
borderWidth: 0, borderWidth: 0,
@ -265,9 +265,9 @@ const clusterAnalyze = () => {
clusterNodesMap.get(cluster).push(node) clusterNodesMap.get(cluster).push(node)
}) })
let colorMap = { let colorMap = {
0: "50,141,120", // 绿 0: "75,241,184", // 绿
1: "133,129,48", // 1: "250,222,37", //
6: "12,112,144" // 6: "69,192,242" //
} }
clusterNodesMap.forEach((nodes, cluster) => { clusterNodesMap.forEach((nodes, cluster) => {
const color = colorMap[cluster] const color = colorMap[cluster]