图像放缩以及亚像素显示

设图像大小100*100。图像中1个单位代表实际1mm。原比例显示,此时显示在设备坐标上是100像素*100像素。若要在设备坐标上画一条直线,该直线代表了实际10mm,那么体现在设备坐标上就是10个像素。也就是要在屏幕上画一条10像素长的直线才能满足要求。

若图像的显示放大10倍,图像的大小依然是100*100,图像中1个单位代表实际1mm,这一点不会受到放缩显示的影响。此时图像显示在设备坐标上是1000像素*1000像素。若要在设备坐标上画一条直线,该直线代表了实际10mm,那么体现在设备坐标上就是100个像素。也就是要在屏幕上画一条100像素长的直线才能满足要求。

 

根据上述情况,那么可以构造这样一个坐标系:该坐标系专门用于测量与绘制,不妨称为绘制坐标系。绘制坐标系的原点与图像原点重合,绘制坐标系的单位长度与图像的单位长度相同。只要测定好1个图像单位代表实际的物理尺寸是多少,那么该绘制坐标系的1个单位就代表多少物理尺寸。

由于该绘制坐标系始终都与图像坐标系的原点及单位长度保持一致,所以绘制坐标系会随着图像的放缩平移而改变其屏幕显示。唯一与图像坐标系不同的是,绘制坐标系的坐标都是用浮点数表示。

依然取上面放大10倍显示的例子。想要屏幕上画一条3.1mm长的直线,于是在屏幕上画了一条31个像素长度的直线,其坐标是(0,0)——(0,31)。那么根据放缩比,可以求得绘制坐标系中的直线长度是3mm,其在绘制坐标系中的坐标是(0.0,0.0)——(0.0,3.1)。但该直线在图像坐标系中的坐标是(0,0)——(0,3)。

同理地,现在有个图像坐标系中的亚像素点(0.0,3.1)。图像依然放大10倍显示。这个点在图像上,其坐标应该是(0,3)附近。为了能在屏幕上准确显示,于是图像放大10倍显示,此时该点在绘制坐标系中依然是(0.0,3.1),但根据放缩比,其显示在设备坐标系中就变成了(0,31)。于是在设备坐标系中也就是屏幕上准确地显示了该点的位置。

同理,在屏幕的显示区域用鼠标指向(0,31)点,那么可以得到其亚像素坐标是(0.0,3.1),其像素坐标是(0,3)。

 

在此过程中,取逻辑坐标系与设备坐标系始终一致,绘制坐标系与图像坐标系相同。另外绘制坐标系的原点在逻辑坐标系中的位置以及放缩比需要进行保存,并且随着平移及放缩操作实时更新。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值