工具栏布局采用WPF中Grid作为容器,按钮采用自定义样式和图标,并采用Separator分割线:

XAML设计器代码:

其中  Style="{StaticResource ButtonStyle}"  按钮样式可以根据自身UI风格来使用自定义样式

<Button x:Name="BtnRotate"  Margin="5,0,0,0" Style="{StaticResource ButtonStyle}" HorizontalAlignment="Left" VerticalAlignment="Top"  Height="59"  Click="BtnRotate_Click"  >
<Button.Content>
<Grid>
<Image Source="/PACS;component/Resources/旋转.png" Margin="-5,-1,-5,21" />
<TextBlock Text="旋转" Foreground="White" Margin="0,32,0,0" />
</Grid>
</Button.Content>
<Button.ContextMenu>
<ContextMenu >
<MenuItem Header="自由旋转 (Ctrl X)" Click="MyRotate_Click" >
<MenuItem.Icon>
<ImageBrush ImageSource="/PACS;component/Resources/自由旋转.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="角度回零" Click="RotateClear_Click">
<MenuItem.Icon>
<ImageBrush ImageSource="/PACS;component/Resources/角度归零.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="右旋转90°" Click="RotateRight90_Click">
<MenuItem.Icon>
<ImageBrush ImageSource="/PACS;component/Resources/右旋转90.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="左旋转90°" Click="RotateLeft90_Click">
<MenuItem.Icon>
<ImageBrush ImageSource="/PACS;component/Resources/左旋转90.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="水平翻转" Click="RotateHor_Click">
<MenuItem.Icon>
<ImageBrush ImageSource="/PACS;component/Resources/水平翻转.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="垂直翻转" Click="RotateVer_Click">
<MenuItem.Icon>
<ImageBrush ImageSource="/PACS;component/Resources/垂直翻转.png"/>
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</Button.ContextMenu>
</Button>

需要注意的是,当我们点击按钮时弹出的菜单实际上是右键菜单ContextMenu,

所以要在按钮的点击事件中显示右键菜单并定位:

//设置关联按钮
BtnRotate.ContextMenu.PlacementTarget = BtnRotate;
//弹出时的位置在底部
BtnRotate.ContextMenu.Placement = PlacementMode.Bottom;
//显示菜单
BtnRotate.ContextMenu.IsOpen = true;

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影像处理系统宣传视频

C#开发PACS医学影像处理系统(三):界面布局之工具栏的更多相关文章

  1. C#开发PACS医学影像处理系统(二):界面布局之菜单栏

    在菜单栏布局上,为了使用自定义窗体样式和按钮,我们需要先将窗体设置为无边框,然后添加一个Grid作为菜单栏并置顶,VerticalAlignment="Top" logo图片和标题 ...

  2. C#开发PACS医学影像处理系统(六):加载Dicom影像

    对于一款软件的扩展性和维护性来说,上层业务逻辑和UI表现一定要自己开发才有控制权,否则项目上线之后容易被掣肘, 而底层图像处理,我们不需要重复造轮子,这里推荐使用fo-dicom,同样基于Dicom3 ...

  3. C#开发PACS医学影像处理系统(十二):绘图处理之图形标记

    在医生实际使用过程中,对于有病灶的影像需要一些2D绘图操作,例如对于病灶的标记和测量, 这就牵涉到在WPF中的2D绘图操作技术,一般的思路是监听鼠标的按下和抬起以及运动轨迹,目前整理出的常用绘图和测量 ...

  4. C#开发PACS医学影像处理系统(十三):绘图处理之病灶测量

    接上一篇文章,当我们可以绘制图形标记后,就可以在此操作类上面进行扩展, 比如测量类工具,目前整理出的常用绘图和测量功能如下: 测量工具类:(图形标记类请参考本系列文章:绘图处理之图形标记) 功能 说明 ...

  5. C#开发PACS医学影像处理系统(十五):Dicom影像交叉定位线算法

    1.定位线概念:某个方位的影像在另一个方向的影像上的投影相交线,例如横断面(从头到脚的方向)在矢状面(从左手到右手)上的影像投影面交线. 举个例子:右边的是MR(核磁共振)的某一帧切片,这是从头开始扫 ...

  6. C#开发PACS医学影像处理系统(十六):2D处理之影像平移和缩放

    1.平移,利用WPF中控件边距来控制位移: /// <summary> /// 平移图像 /// </summary> /// <param name="X&q ...

  7. C#开发PACS医学影像处理系统(十七):2D处理之影像旋转和翻转

    1.任意角度旋转 在XAML设计器中,设置RotateTransform属性 <InkCanvas x:Name="ToolInkCanvas" UseCustomCurso ...

  8. C#开发PACS医学影像处理系统(十四):处理Dicom影像窗宽窗位

    概念解释(网络资料): 窗宽: 窗宽指CT图像所显示的CT 值范围.在此CT值范围内的组织结构按其密度高低从白到黑分为16 个灰阶以供观察对比.例如,窗宽选定为100 Hu ,则人眼可分辨的CT值为1 ...

  9. C#开发PACS医学影像处理系统(一):开发背景和说明

    本系列文章将从以下模块和大家分享和讨论使用C#开发医学软件PACS和RIS系统, 国内相关资料比较少,也借此机会丰富一下医学软件开发生态,讨论技术难点,希望大家互相帮助共同进步. 章节介绍及截图预览: ...

随机推荐

  1. 栈及其简单应用(python代码)

    栈属于线性结构(Linear Struncture),要搞清楚这个概念,首先要明白”栈“原来的意思,如此才能把握本质."栈“者,存储货物或供旅客住宿的地方,可引申为仓库.中转站,所以引入到计 ...

  2. C#LeetCode刷题之#203-删除链表中的节点(Remove Linked List Elements)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3826 访问. 删除链表中等于给定值 val 的所有节点. 输入: ...

  3. MongoDB学习2:MongoDB的基本操作

    以下都是基于MongoShell进行操作 1.使用insert进行插入操作  示例: db.<集合>.insertOne(<JSON对象>) db.<集合>.ins ...

  4. Azure Application Gateway(二)对后端 VM 进行负载均衡

    一,引言 上一节有讲到使用 Azure Application Gateway 为我们后端类型为 Web App 的 Demo 项目提供负载均衡,Azure Application Gateway 的 ...

  5. day6 函数

    1.关键字参数     给实参对应的形参   调用函数时 设置关键字参数,形参=实参,把实参固定给那个形参 2.元组的可变(不定长参数)的使用      可变参数可以接收任意数量的普通的形参,并且组包 ...

  6. 如何将返回的JSon字符串用MAP格式读取

    语法是这样: ObjectMapper mapper = new ObjectMapper(); Map resultMap=null; resultMap = mapper.readValue(in ...

  7. Nginx同时支持Http和Https

    现在的网站支持Https几乎是标配功能,Nginx能很好的支持Https功能.下面列举一个配置同时支持Http和Https的功能. 需要注意的是:既然选择使用Https,就是为了保证通信安全,那么就没 ...

  8. Git操作之码云代码clone

    安装Git https://git-scm.com/book/zh/v2/起步-安装-Git Git的网站上有详细的分各种系统的安装教程. 配置Git 1. 打开你要放置项目的本地路径,右键选择$ G ...

  9. ElasticSearch实战系列八: Filebeat快速入门和使用---图文详解

    前言 本文主要介绍的是ELK日志系统中的Filebeat快速入门教程. ELK介绍 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是 ...

  10. Shell编程—用户输入

    1命令行参数 1.1读取参数 bash shell会将一些称为位置参数(positional parameter)的特殊变量分配给输入到命令行中的所有参数.这也包括shell所执行的脚本名称.位置参数 ...