设置坐标映射

图像的几何变换之坐标映射 图像的几何变换是指在不改变图像像素值得前提下,对图像进行空间几何变换,常见的几何变换有距离变换,坐标映射、平移、镜像、旋转、缩放、放射变换等。图像的几何处理是图形处理和分析的基础,应用广泛,如字符矫正、车牌区域水平与垂直矫正及图像特征分析识别等。 坐标映射 图像的坐标映射是通过原图像与目标图像之间建立一种映射关系,这种映射关系有两种:一种就是计算原图像任意像素在映射后图像的坐标位置;二 阅读详情

设置坐标映射

   (1Windows坐标系统

Windows坐标系分为逻辑坐标系和设备坐标系两种,GDI支持这两种坐标系。一般而言,

GDI的文本和图形输出函数使用逻辑坐标,而在客户区移动或按下鼠标的鼠标位置是采用设备坐标。

<1>逻辑坐标系是面向DC的坐标系,这种坐标不考虑具体的设备类型,在绘图时,Windows会根据当前设置的映射模式将逻辑坐标转换为设备坐标。

<2>设备坐标系是面向物理设备的坐标系,这种坐标以像素或设备所能表示的最小长度单位为单位,X轴方向向右,Y轴方向向下。设备坐标系的原点位置(0, 0)不限定在设备显示区域的左上角。

设备坐标系分为屏幕坐标系、窗口坐标系和客户区坐标系三种相互独立的坐标系。

l       屏幕坐标系以屏幕左上角为原点,一些与整个屏幕有关的函数均采用屏幕坐标,如GetCursorPos()SetCursorPos()CreateWindow()MoveWindow()。弹出式菜单使用的也是屏幕坐标。

l       窗口坐标系以窗口左上角为坐标原点,它包括窗口标题栏、菜单栏和工具栏等范围。

l       客户区坐标系以窗口客户区左上角为原点,主要用于客户区的绘图输出和窗口消息的处理。鼠标消息的坐标参数使用客户区坐标,CDC类绘图成员函数使用与客户区坐标对应的逻辑坐标。

2)坐标之间的相互转换

l       编程时,有时需要根据当前的具体情况进行三种设备坐标之间或与逻辑坐标的相互转换。

l       MFC提供了两个函数CDC::DPtoLP()CDC:: LPtoDP()用于设备坐标与逻辑坐标之间的相互转换。

l       MFC提供了两个函数CWnd::ScreenToClient()CWnd::ClientToScreen()用于屏幕坐标与客户区坐标的相互转换。

3)映射模式

l       映射模式确定了在绘制图形时所依据的坐标系,它定义了逻辑单位的实际大小、坐标增长方向,所有映射模式的坐标原点均在设备输出区域(如客户区或打印区)的左上角。此外,对于某些映射模式,用户还可以自定义窗口的长度和宽度,设置视图区的物理范围。

l       Windows定义了8种映射模式,见下表。

l       映射模式使得程序员可不必考虑输出设备的具体设备坐标系,而在一个统一的逻辑坐标系中进行图形的绘制。

映射方法(Mapping Mode

逻辑单位

坐标轴方向

MM_TEXT(默认方式)

1 pixel

X轴正方向朝右,Y轴正方向朝下

MM_LOMETRIC

0.1 mm

X轴正方向朝右,Y轴正方向朝上

MM_HIMETRIC

0.01 mm

X轴正方向朝右,Y轴正方向朝上

MM_LOENGLISH

0.01 inch

X轴正方向朝右,Y轴正方向朝上

MM_HIENGLISH

0.001 inch

X轴正方向朝右,Y轴正方向朝上

MM_TWIPS

1/1440 inch

X轴正方向朝右,Y轴正方向朝上

MM_ISOTROPIC

自定义(X=Y)

自定义

MM_ANISOTROPIC

自定义(X!=Y)

自定义

当绘制的图形需要随着窗口的大小改变而自动改变的时候,一般选择MM_ISOTROPICMM_ANISOTROPIC映射方式。它们的唯一区别就是前者的X轴和Y轴的逻辑单位的大小是相同的,单词“isotropic”就是各个方向相等的意思,此映射方式适合绘制圆或正方形。而实际应用中,常常给X轴和Y轴取不同的比例,这时候选择MM_ANISOTROPIC映射方式。单词“anisotropic”就是各个方向相异的意思。

(4)自定义映射模式

“窗口”和“视口”的概念:

窗口(Window):对应逻辑坐标系上程序员设定的区域

视口(Viewport):对应实际输出设备上程序员设定的区域

l       窗口原点是指逻辑窗口坐标系的原点在视口(设备)坐标系中的位置,视口原点是指设备实际输出区域的原点。

l       除了映射模式,窗口和视口也是决定一个点的逻辑坐标如何转换为设备坐标的一个因素。一个点的逻辑坐标按照如下式子转换为设备坐标:

            设备(视口)坐标 = 逻辑坐标窗口原点坐标      + 视口原点坐标

//定义坐标映射方式

WINGDIAPI int   WINAPI SetMapMode(HDC, int);

API函数在MFC中封装为CDC::virtual int SetMapMode(int nMapMode);

//定义逻辑窗口区域,单位为逻辑单位(Logical

WINGDIAPI BOOL  WINAPI SetWindowExtEx (HDC, int, int, LPSIZE);

API函数在MFC中封装为CDC::virtual CSize SetWindowExt(int cx, int cy);

//设置逻辑窗口的原点坐标,缺省原点为(00)。

WINGDIAPI BOOL  WINAPI SetWindowOrgEx(HDC, int, int, LPPOINT);

API函数在MFC中封装为CDC::CPoint SetWindowOrg(int x, int y);

注意:SetWindowOrg(Ex) 只有在映射模式为MM_ANISOTROPICMM_ISOTROPIC时才有意义。

//定义视口的坐标轴方向及区域、定义域和值域,单位为像素(Pixel

WINGDIAPI BOOL  WINAPI SetViewportExtEx(HDC, int, int, LPSIZE);

API函数在MFC中封装为CDC::virtual CSize SetViewportExt(int cx, int cy);

注意:SetViewportExt(Ex) 只有在映射模式为MM_ANISOTROPICMM_ISOTROPIC时才有意义。

//设置视口的原点坐标,缺省原点为(00)。

WINGDIAPI BOOL  WINAPI SetViewportOrgEx(HDC, int, int, LPPOINT);

API函数在MFC中封装为CDC:: virtual CPoint SetViewportOrg(int x, int y);

    参考:《GDI中的坐标映射问题》http://dev.csdn.net/article/12/12013.shtm

 

http://ewqs.nhome.cn/docuview.asp?docu_id=199

STM32F429网络通信避坑指南:用CubeMX搞定LAN8720+LWIP+FreeRTOS(附完整代码) 本文详细介绍了STM32F429通过CubeMX配置LAN8720+LWIP+FreeRTOS实现网络通信的避坑指南,涵盖硬件连接、CubeMX配置、LWIP优化及调试技巧,提供完整代码和实战经验,帮助开发者高效解决以太网通信中的常见问题。 阅读详情

相关推荐

VC++随鼠标移动显示坐标和坐标映射模式学习

MFC坐标映射模式;

bcbobo21cn的专栏 986

opencv图像处理学习(五)——坐标映射,平移,缩放,旋转

1.坐标映射 图像的坐标映射是涌过原图像与目标图像之间建立一种映射关系,这种映射关系有两种:一种是计算原图像任意像素在映射后图像的坐标位置,另一种是计算变换后图像任意像素反映在原图像的位置。 opencv提供重映射的相关操作,对于一个图像的一个位置的像素通过映射关系转换到另一图像的制定位置。对于原图像f(x,y),目标图像为g(x,y),映射关系为T,则有下式: 其相关函数是: void ...

图像学习之旅 9260

线性代数导引:坐标映射

线性代数导引:坐标映射 1. 背景介绍 1.1 问题的由来 在现代数学和计算机科学中,线性代数扮演着至关重要的角色。它为我们提供了一种强大的工具,用于描述和操作各种向量空间,并解决广泛的应用问题。其中,坐标映射是线性代数中一个核心概念,它将向量从一个坐标

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 326

(opencv)图像几何变换——坐标映射

图像的几何变换是指在不改变图像像素值的前提下对图像像素及逆行空间集合变换,常见的几何变换有距离变换、坐标映射、平移、镜像、旋转、缩放、仿射变换等。

yangSHU21的博客 1216

坐标映射

1、设备坐标系都是以像素为单位,水平(x轴)从左到右递增,垂直(y轴)从上到下递增2、屏幕坐标:以显示器左上角为原点窗口坐标:以窗口左上角为原点客户区域坐标:以客户区坐标窗口为原点3、映射方式用于定义从“窗口”(逻辑坐标)到“视口”(设备坐标)的映射,“窗口”和“视口”这两个词用得并不恰当,因为视口通常包含裁剪区域的意思,况且在windows中又已经用窗口来指程序在屏幕上占住的区域。4、逻辑坐标转换为设备坐标xViewport = (xWindow - xWinOrg) * xViewExt/xWinExt

宋文超的专栏 3261

GDI+学习笔记-坐标系和坐标变换

GDI+学习笔记-坐标系和坐标变换

wangnaisheng的专栏 904

经纬度坐标映射到平面直角坐标系

本文介绍了测量中常见的坐标系,并总结了一些坐标系投影的方法和工具,以及一些源码,主要关于从经纬度坐标到平面直角坐标系,即空间大地坐标系到平面直角坐标系的映射。

Yang的专栏 4万+

设置qgraphicsitem原点_Qt中QGraphics类坐标映射关系详解

1、Item(图元)坐标:属于局部坐标,通常以图元中心为原点(中心对称),非中心对称类,比如dialog类,一般以左上角为原点,正方向x朝右,y朝下。2、setPos的坐标是父类坐标系的坐标,一般对于item位于scene中的应用场景。3、scene(场景)坐标:属于逻辑坐标 logical coordinates(与QPainter相同),以场景中心为原点,正方向x朝右,y朝下。4、图元原点(左...

weixin_39910963的博客 3289

GDI中的坐标映射问题(3)

3.从程序员的角度来看坐标映射    坐标映射在程序员的眼中就是要根据自己实际问题的要求,构造出一个满足要求的逻辑空间。所谓的满足要求就是指每一个我们在程序中使用的点,都能出现在physical device上我们预期的相应位置。由于device空间到physical device空间是一对一的映射,因此,我们完全可以将绘图目的地看成device空间,所构造出的逻辑空间也只需正确映射到devic

MOKA 707

vc中坐标映射

关于vc中坐标映射的学习心得一、理论准备首先在深入vc学习坐标映射的相关知识前,我们必须要知道两个不同的平面直角坐标系应该如和进行转换。   逻辑坐标系:顾名思义,既然是逻辑的,也就是我们想象的。它是不受任何设备因素的限制的。这极其类似于平面几何中直角坐标系,原点我们可以任意定,x轴,y轴的相对方向和位置可以任意定,定义原点之后,我们可以以任意的长度进行绘图,平面空间无限大。可以这样说,逻辑坐标系

zhangwei_life的专栏 1043

当前曲线显示已接近居中,但曲线填满了格子(画布区域),显得不够美观。这表明范围设置坐标映射可能导致曲线过于贴近画布边界,缺乏足够的空白边距(padding),影响视觉效果

当前曲线显示已接近居中,但曲线填满了格子(画布区域),显得不够美观。三、改进代码以下是对 AutoScale 和 DrawChannels 方法的优化,AddToChannel 方法保持不变(上一版本已足够支持居中和负值)。重点是增加边距、优化余量、确保居中和美观。以下我将分析问题原因,提出针对性的优化方案,改进 AutoScale 和 DrawChannels 方法,确保曲线在画布中央区域显示,留出适当边距,视觉效果更美观。改进代码:csharp。改进代码:csharp。改进代码:csharp。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 545

GDI的坐标映射搞了半天才明白

只怪我自己太笨了,这么简单的东西,搞了半天才弄明白。 首先通过 SetMapMode函数修改坐标映射模式,我这里使用了MM_ANISOTROPIC模式。 SetMapMode(hDC,MM_ANISOTROPIC); 然后调用SetWindowExtEx函数设置逻辑坐标。我们把基数调简单一点为1,1 SetWindowExtEx(hDC,1,1,NULL); 再调用Se...

weixin_30235225的博客 72

用OpenGL制作三维迷宫(二)

<!-- @page {margin:2cm} pre {font-family:"DejaVu Sans Mono",monospace} p.我的格式-western {font-family:"DejaVu Sans",sans-serif; font-size:10pt; page-break-before:auto} p.我的格式-cjk {font-si

开发游戏,辉煌全中国 7615

MFC中的GDI绘图

MFC中的GDI绘图 分类: MFC 2011-09-27 17:19 950人阅读 评论(1) 收藏 举报 mfcwindows图形stylesapiwinapi 目录(?)[+] 什么是GDI什么是DCMFC中与GDI有关的类获取设备环境设置坐标映射创建绘图工具并选入DC调用DC绘图函数绘图三坐标映射实例 一.关于GDI的基本概念 什么

worldy的专栏 4303

提到初始化时 Y 轴坐标显示错误(可能倒序或范围异常),刷新后正常。问题可能源于初始化未正确设置范围或坐标映射

提到初始化时 Y 轴坐标显示错误(可能倒序或范围异常),刷新后正常。问题可能源于初始化未正确设置范围或坐标映射。以下是精简优化的 Oscilloscope 构造函数、AutoScale 和 DrawChannels 方法,确保初始化 Y 轴正确(数值增大向下),保留 15% 边距、动态余量(20%-40%)、负值支持,代码注释简洁清晰。GetLegendBoxRec 保持不变。1. Oscilloscope 构造函数。3. DrawChannels 方法。2. AutoScale 方法。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 335

opencv学习之--------坐标映射(remap重映射)

       图像的坐标映射是通过原图像与目标图像之间建立一种映射关系,这种映射关系有两种,一种是计算原图像任意像素在映射后图像的坐标位置,另一种是计算变换后图像任意像素反映射在原图像的坐标位置。 opencv中提供重映射等操作,其中重映射就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程。为了完成映射过程,需要获得一些插值为非整数像素的坐标。对于原图像和目标图像,满足下式: G(x,...

计算机相关知识 2万+

图像任意旋转——坐标映射

在新的坐标系下,假设点(x0,y0)距离原点的距离为 r,点与原点之间的连线与 x 轴的夹角为 b,旋转。图像旋转是指图像以某一点为中心旋转一定的角度,形成一幅新的图像的过程。如图所示,将输入的原图像的数据转化为和原点相关的数据。那么我们就有以下结论。若按照中心旋转,则旋转后的点和旋转前的点到原点的距离相等。的角度为 a,旋转后的点为(x1,y1),如图所示。步骤一,图像输出前处理:x,y坐标变换。步骤三:旋转后左右复原。

qq_44676785的博客 702

vc++(2)

(映射方式)Mapping modes (设备坐标)Device coordinatesand (逻辑坐标)logicalcoordinates 设备坐标是依赖设备像素的,逻辑坐标则独立于设备像素。 设备坐标的单位是像素(pixel),逻辑坐标的单位则为1/100毫米。 另外,逻辑坐标的Y坐标随着点的下降而减小(屏幕顶端为0),例如:一个4X4厘米的正方形用逻辑坐标画出的方式为:pDC->

539

/LGC图形渲染/图像处理系列之旋转

图像处理系列之旋转 作者: HouSisong 日期: 2009-08-14 本文介绍了图像旋转的原理和公式,并给出了公式的推

uunubt的专栏 803

复现论文《基于Retinex理论和深度学习的低照度图像增强算法研究》

本研究提出两种基于Retinex理论和深度学习的低照度图像增强算法。第一种算法在HSV色彩空间中进行处理,采用Res2Block和CBAM-Res2block模块增强多尺度特征表示;第二种算法使用多尺度残差U型网络结构。复现代码展示了Res2Block、CBAM注意力机制等核心模块的实现,包括多尺度特征提取、通道和空间注意力机制。实验结果表明,所提算法能有效解决低照度图像存在的亮度低、对比度不足、颜色失真和细节丢失等问题,显著提升图像质量。

max500600的博客 365

华为4A企业架构设计方法论及实例.pptx

华为4A企业架构设计方法论及实例.pptx

上一篇: Win32 GDI API
下一篇: 用Visual C 设计窗体探测器
ShenRui
博客等级 码龄19年 63粉丝 36原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值