在这个话题▼

图像查看器边界和变换

图像查看器外观,各种元素的imageview控件参与视图布局系统,视图转换和项目的大小和属性,以放置和呈现每个项目在其位置。

imageview包含许多属性和方法来获得一个元素的变换矩阵和边界矩形。

项目最重要的任务是确定渲染图像所需的变换矩阵。这可以很容易地使用GetItemImageTransform。此方法返回LeadMatrix它包含将图像放置在相对于查看器左上角(客户区像素0,0)的查看器表面上所需的所有转换值。

自定义渲染图像:

  1. 订阅查看器的一个呈现事件。指图像查看器渲染了解更多信息

  2. 获取图像大小ImageViewerItem。图象尺寸imageview。GetItemImageSize。设置此值图象尺寸类型变量LeadSizeD

  3. 通常情况下,需要渲染整个图像。因此,将目标矩形创建为类型为LeadRectD与价值观0, 0 imageSize.Width imageSize.Height

  4. 获取该项目图像的变换矩阵GetItemImageTransform,将其设置在一个变量中imageTransform类型的LeadMatrix

  5. 将这个矩阵设置到渲染上下文中

  6. 使用目标矩形渲染图像

除了图像变换之外,您还可以使用以下命令获得项目任何其他部分的变换矩阵:

成员 描述
GetItemTransform

返回项本身的转换。用于绘制项目边框,例如在添加项目填充后

GetItemContentTransform

返回内容区域的转换

GetItemFloaterTransform

返回浮动图像的变换(如果有的话)。使用GetItemFloaterSize以上述用于自定义渲染图像的相同方式自定义渲染浮动

查看器包含许多方法和属性,用于在物理(控件)和逻辑(视图内)坐标中获取项目(或其任何部分)的边界矩形:

成员 描述
GetItemViewBounds

获取包含图像的项的任何部分的当前物理(在控制像素坐标中)边界

GetItemBounds

获取项目的任何部分(包括图像)的当前逻辑边界(不包括当前转换)

GetItemViewBounds可用于获取包括图像在内的项目任何部分的当前物理(在控制像素坐标中)边界。此方法可用于执行手动命中测试或针对剪切矩形进行测试。GetItemBounds在逻辑坐标中返回相同的值(不包括当前转换)。

ImageViewerItemPart枚举可以在方法和属性中使用,以捐赠我们感兴趣的项目的一部分。

视图

所获得的矩阵来渲染视图ViewTransform。视图边界可以使用GetViewBounds。自定义渲染视图可以用与上面描述的自定义渲染图像相同的方式执行,用视图值替换图像变换和边界。

坐标系与转换

从鼠标点击等事件获得的点处于物理(像素)坐标中,而图像或视图中的点处于逻辑坐标中。将一个点从一个坐标转换到另一个坐标需要应用正确的变换矩阵。这可以通过获取所涉及的矩阵并变换点来手动完成,也可以使用以下任何一种方法自动完成imageview辅助方法:

成员 描述
ConvertPoint

将一个点从任意坐标转换为另一个坐标

ConvertPoints

将点数组从任意坐标转换为另一个坐标

ConvertRect

将矩形从任意坐标转换为另一个坐标

ConvertTransform

将一个变换矩阵相对于一个项目转换为相对于不同的项目

ConvertBoundsToView

将矩形从逻辑视图坐标转换为物理视图坐标

LEADTOOLS成像、医疗和文档
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领先科技有限公司版权所有。