diff --git a/apps/desktop/src/pages/Viewer/MprViewer/Crosshair.tsx b/apps/desktop/src/pages/Viewer/MprViewer/Crosshair.tsx index 3a5f603..3792a04 100644 --- a/apps/desktop/src/pages/Viewer/MprViewer/Crosshair.tsx +++ b/apps/desktop/src/pages/Viewer/MprViewer/Crosshair.tsx @@ -19,6 +19,7 @@ import { viewportId3, ViewportId, } from "./Crosshair.config"; +import { IStackViewport } from "@cornerstonejs/core/dist/types/types"; const { ToolGroupManager, @@ -63,6 +64,7 @@ interface CrosshairMprProps { export const CrosshairMpr = (props: CrosshairMprProps) => { const containerRef = useRef(null); + const viewportStack = useRef(null); const viewportRef_AXIAL = useRef(null); const viewportRef_SAGITTAL = useRef(null); const viewportRef_CORONAL = useRef(null); @@ -116,6 +118,17 @@ export const CrosshairMpr = (props: CrosshairMprProps) => { const defaultWindowWidth = 850; console.log("采用默认窗宽/位: ", windowCenter, windowWidth); + // 定义 Stack 视口 + const stackViewport = "stack" + props.SeriesInstanceUID + ts; + const viewportInput: PublicViewportInput = { + viewportId: stackViewport, + type: CoreEnums.ViewportType.STACK, // 用于 Stack 视图 + element: viewportStack.current!, + defaultOptions: { + background: [0, 0, 0], + }, + }; + // Create the viewports const viewportInputArray: PublicViewportInput[] = [ { @@ -124,7 +137,7 @@ export const CrosshairMpr = (props: CrosshairMprProps) => { element: viewportRef_AXIAL.current, defaultOptions: { orientation: CoreEnums.OrientationAxis.AXIAL, - background: [0, 0, 0], + background: [0, 0, 0], }, }, { @@ -147,7 +160,16 @@ export const CrosshairMpr = (props: CrosshairMprProps) => { }, ]; - renderingEngine.current.setViewports(viewportInputArray); + renderingEngine.current.setViewports([ + ...viewportInputArray, + viewportInput, + ]); + + const viewport = renderingEngine.current.getViewport( + stackViewport + ) as IStackViewport; + + viewport.setStack(imageIds.current, 80); // Set the volume to load volume.load(); @@ -280,9 +302,10 @@ export const CrosshairMpr = (props: CrosshairMprProps) => { return (
-
-
-
+
+
+
+
); }; diff --git a/apps/desktop/src/pages/Viewer/index.tsx b/apps/desktop/src/pages/Viewer/index.tsx index f8d7c04..9668b13 100644 --- a/apps/desktop/src/pages/Viewer/index.tsx +++ b/apps/desktop/src/pages/Viewer/index.tsx @@ -1,13 +1,14 @@ import { useLocation } from "react-router-dom"; import { initCornerstone } from "./MprViewer/CornerstoneDicomLoader/init"; import { CrosshairMpr } from "./MprViewer/Crosshair"; -import { useEffect, useState } from "react"; +import { useEffect, useRef, useState } from "react"; import { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from "@/components/ui/resizable"; import { ToolBarMenu } from "./MprViewer/ToolBarMenu"; +import { RenderingEngine } from "@cornerstonejs/core"; export interface CurrentDicom { SeriesInstanceUID: string | null; @@ -36,7 +37,7 @@ export const Viewer = () => { initCornerstone(() => { setCornerstoneLoaded(true); }); - }, []); + }, [queryParams]); useEffect(() => { console.log(cornerstoneLoaded); @@ -49,14 +50,14 @@ export const Viewer = () => {
- +
-
top
+
@@ -66,7 +67,7 @@ export const Viewer = () => {
- + {cornerstoneLoaded && currentDicom.StudyInstanceUID && currentDicom.SeriesInstanceUID && (