当前位置: 首页 > news >正文

ImageViewer技术实现细节

第1章 ImageViewer工具使用方法

1.1. 图像加载

1.1.1. 单图像加载

在这里插入图片描述

左上角菜单,“File”->“单图像”,或者Ctrl-S,弹出文件对话框,选择图像文件,当前支持bmp,png,jpg格式。
在这里插入图片描述

结果如下图所示:
在这里插入图片描述

1.1.2. 多图像加载

在这里插入图片描述

左上角菜单,“File”->“多图像”,或者Ctrl-M,弹出文件对话框,选择图像文件,当前支持bmp,png,jpg格式,可以同时选择多张。
在这里插入图片描述

结果如下图所示:
在这里插入图片描述

1.2. 图像操作

1.2.1. 图像操作

左键按下拖动,可以平移图像。
滚轮旋转,以鼠标为中心缩放图像。
右键按下拖动,可以绘制区域,最多支持4层。

1.2.2. 多图像同步

左键按下拖动,平移图像。滚轮旋转,以鼠标为中心缩放图像。在多图像情况下,所有图像会同步缩放和平移。
如下图所示:
在这里插入图片描述

1.3. 像素值查看

1.3.1. 图像像素值显示

当图像缩放比例超过16倍时,即单个图像像素占36*36屏幕分辨率像素时,会显示网格。
在这里插入图片描述

当图像缩放比例超过36倍时,即单个图像像素占36*36屏幕分辨率像素时,会显示数字。
在这里插入图片描述

第2章 ImageViewer技术实现细节

采用GDI (Graphics Device Interface) API来进行绘图操作。实现了如下功能:
以鼠标为中心缩放;鼠标左键按下拖动;鼠标悬浮绘制光标和坐标提示;自定义事件实现多图像平移缩放同步;鼠标右键绘制区域等。

2.1. 以鼠标为中心缩放

需要在滚轮事件中获取鼠标位置,然后使用缩放前,缩放后比例,缩放前平移,计算得到缩放后平移;
rollPosX,rollPosY是鼠标位置,scale是缩放后比例,prescale是缩放前比例;
canvw,canvh是绘图区域大小,imgw,imgh是图像大小。

imagePosX = rollPosX 
http://www.lryc.cn/news/167954.html

相关文章:

  • MFC多文档程序,从菜单关闭一个文档和直接点击右上角的x效果不同
  • 【数据结构】C++实现AVL平衡树
  • 图神经网络系列之序章
  • Unity中 UI Shader的基本功能
  • 【自学开发之旅】Flask-标准化返回-连接数据库-分表-orm-migrate-增删改查(三)
  • numpy增删改查
  • 【kafka】kafka重要的集群参数配置
  • cs224w_colab3_2023 And cs224w_colab4_2023学习笔记
  • Cannot find module ‘prop-types‘
  • LeetCode-63-不同路径Ⅱ-动态规划
  • unity 使用Photon进行网络同步
  • 大数据课程M1——ELK的概述
  • C# byte[] 如何转换成byte*
  • MySQL与Oracle的分页
  • git基本手册
  • 每日一题(两数相加)
  • 恒运资本:沪指震荡涨0.28%,医药板块强势拉升,金融等板块上扬
  • 【计算机网络】Tcp详解
  • 最简单的laravel不使用任何扩展导出csv
  • Android studio 断点调试、日志断点
  • 服务器数据恢复-热备盘同步过程中硬盘离线的RAID5数据恢复案例
  • Python 使用input获取用户输入
  • Python 可迭代对象、迭代器、生成器
  • HTML的有序列表、无序列表、自定义列表
  • 银河麒麟安装Docker-国产化-九五小庞
  • 数据库与身份认证
  • LabVIEW开发锅炉汽包水位的监督控制和模拟
  • 2023-简单点-树莓派安装ncnn框架
  • Docker核心原理与实操
  • 虚幻引擎 UE5 增强输入系统