C#開發PACS醫學影像處理系統(九):序列控制元件與拖拽

喬克灬叔叔發表於2020-09-15

1.先看結構:

建立WPF使用者控制元件:YourTab

建立WPF使用者控制元件:YourItem

 建立選項卡時迴圈新增item,並設定序列縮圖到控制元件和非同步下載的進度條,

1個病人1個或多個Study檢查,1個Study檢查1個選項卡,併為每個選項卡新增自定義關閉按鈕

 

 Tab自定義關閉按鈕的XAML樣式如下:

 <Style TargetType="{x:Type TabItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type TabItem}">
                            <Grid Margin="-2">
                                <Border Name="Border"  BorderThickness="2" Margin="0,2,0,1"  >
                                    <Grid>
                                        <ContentPresenter x:Name="ContentSite"  VerticalAlignment="Center" HorizontalAlignment="Center"  ContentSource="Header" Margin="5,5,25,5"   />
                                        <Button x:Name="BtnCloseTab" Margin="130,-1,1,-1" Width="25"  BorderBrush="#555555" BorderThickness="3,1,1,1" Style="{StaticResource ButtonStyle}" MouseEnter="Btn_MouseEnter" MouseLeave="Btn_MouseLeave" Click="BtnCloseTab_Click">
                                            <Button.Content>
                                                <Grid>
                                                    <Image Source="/PACS;component/Resources/關閉.png" Margin="-5"/>
                                                    <TextBlock Text="關閉" Visibility="Collapsed"></TextBlock>
                                                </Grid>
                                            </Button.Content>
                                        </Button>
                                    </Grid>
                                </Border>
                            </Grid>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsSelected" Value="True">
                                    <Setter TargetName="Border"  Property="Background" Value="#191919" />
                                    <Setter TargetName="Border" Property="BorderBrush" Value="#555555" />
                                </Trigger>
                                <Trigger Property="IsSelected" Value="False">
                                    <Setter TargetName="Border" Property="Background" Value="#292929" />
                                    <Setter TargetName="Border" Property="BorderBrush" Value="#555555" />
                                </Trigger>
                                <Trigger Property="IsMouseOver"  Value="True">
                                    <Setter TargetName="Border" Property="Background" Value="#3E3E3E" />
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

 

 

2.為Item建立模仿2D建築遊戲的拖拽效果

先建立一個WinForm窗體:

 

設定窗體屬性:窗體位置跟隨滑鼠,透明度75%,無邊框,ShowInTaskBar屬性設為False,當在Item上按下滑鼠並拖動時則建立一個窗體並設定背景圖片和縮圖一致。

看效果:

 

 

3.建立右鍵選單匯出DCM或JPG或視訊

 

  <ContextMenu x:Name="menu">
                <MenuItem Header="清除關聯序列" Click="RelationClear_Click">
                    <MenuItem.Icon>
                        <ImageBrush ImageSource="/PACS;component/Resources/清除.png"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Header="匯出Dicom檔案">
                    <MenuItem.Icon>
                        <ImageBrush ImageSource="/PACS;component/Resources/檔案.png"/>
                    </MenuItem.Icon>
                    <MenuItem Header="當前序列" Click="ExportDicom_Click" Width="140"></MenuItem>
                    <MenuItem Header="所有序列" Click="ExportAllDicom_Click"></MenuItem>
                </MenuItem>
                <MenuItem Header="匯出圖片檔案">
                    <MenuItem.Icon>
                        <ImageBrush ImageSource="/PACS;component/Resources/圖片.png"/>
                    </MenuItem.Icon>
                    <MenuItem Header="當前序列" Width="140" Click="ExportImage_Click"></MenuItem>
                    <MenuItem Header="所有序列" Click="ExportAllImage_Click"></MenuItem>
                </MenuItem>
                <MenuItem Header="匯出視訊檔案">
                    <MenuItem.Icon>
                        <ImageBrush ImageSource="/PACS;component/Resources/視訊.png"/>
                    </MenuItem.Icon>
                    <MenuItem Header="當前序列" Width="140" Click="ExportMedia_Click"></MenuItem>
                    <MenuItem Header="所有序列" Click="ExportAllMedia_Click"></MenuItem>
                </MenuItem>
                <MenuItem Header="推送該序列">
                    <MenuItem.Icon>
                        <ImageBrush ImageSource="/PACS;component/Resources/推送.png"/>
                    </MenuItem.Icon>
                    <MenuItem Header="當前序列" Width="140" Click="Send_Click"></MenuItem>
                    <MenuItem Header="所有序列" Click="SendAll_Click"></MenuItem>
                </MenuItem>
            </ContextMenu>

 

 

 

匯出Dicom檔案:你開啟影像時下載的DCM檔案在本地硬碟的路徑,複製檔案就行了。 

匯出圖片檔案:可以參考本系列文章的載入Dicom影像等章節。

匯出視訊檔案:用第三方的圖片轉視訊檔案匯出序列視訊,推薦使用AForge。

推送:將當前序列推送到其他電腦或裝置。

 

 

C#開發PACS、RIS醫學影像處理系統

目錄整理:

(一)PACS客戶端:

C#開發PACS醫學影像處理系統(一):開發背景和功能預覽

C#開發PACS醫學影像處理系統(二):介面佈局之選單欄

C#開發PACS醫學影像處理系統(三):介面佈局之工具欄

C#開發PACS醫學影像處理系統(四):介面佈局之狀態列

C#開發PACS醫學影像處理系統(五):查詢病人資訊列表

C#開發PACS醫學影像處理系統(六):載入Dicom影像

C#開發PACS醫學影像處理系統(七):讀取影像Dicom資訊

C#開發PACS醫學影像處理系統(八):單元格變換

C#開發PACS醫學影像處理系統(九):序列控制元件與拖拽

C#開發PACS醫學影像處理系統(十):Dicom影像下載策略與演算法

C#開發PACS醫學影像處理系統(十一):Dicom影像掛片協議

C#開發PACS醫學影像處理系統(十二):繪圖處理之圖形標記

C#開發PACS醫學影像處理系統(十三):繪圖處理之測量工具

C#開發PACS醫學影像處理系統(十四):處理Dicom影像窗寬窗位

C#開發PACS醫學影像處理系統(十五):基於體點陣圖交叉定位線演算法

C#開發PACS醫學影像處理系統(十六):2D處理之平移和縮放

C#開發PACS醫學影像處理系統(十七):2D處理之任意角度旋轉與映象翻轉

C#開發PACS醫學影像處理系統(十八):Dicom影像色彩增強(偽彩)

C#開發PACS醫學影像處理系統(十九):Dicom影像反色處理(負片)

C#開發PACS醫學影像處理系統(二十):Dicom影像放大鏡功能

 

(二)PACS三維:MRP、MIP、VR

C#開發PACS醫學影像三維重建(一):使用VTK三維重建Dicom影像

 

(三)PACS網頁端:開發Web版本的PACS

C#開發Web端PACS(一):基於PACS客戶端思想重寫Web端

 

(四)PACS移動端:開發基於HTML5移動端版本的PACS

C#開發移動端PACS(一):使用HTML5和CSS3開發PACS手機端頁面

C#開發移動端PACS(二):使用 .Net MVC 開發手機端PACS服務端

 

(五)PACS服務端:

C#開發PACS醫學影像處理系統服務端(一):醫療裝置的連線與收圖

C#開發PACS醫學影像處理系統服務端(二):高併發架構

 

(六)PACS與RIS系統的通訊與整合

在RIS系統中調起PACS並開啟Dicom影像

 

(七)雲PACS與遠端會診

C#開發PACS醫學影像處理系統之雲PACS(區域PACS)(一):架構概述

C#開發PACS醫學影像處理系統之雲PACS(區域PACS)(二):遠端會診與雙向轉診

 

(八)科幻級視訊特效:使用Adobe After Effects 製作PACS影像處理系統宣傳視訊

 

相關文章