`
jishublog
  • 浏览: 896931 次
文章分类
社区版块
存档分类
最新评论

视图间坐标转换

 
阅读更多
- (void)viewDidLoad
{
    [super viewDidLoad];
	
    UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 100.0f, 300.0f, 100.0f)];
    view1.backgroundColor = [UIColor blackColor];
    UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(30.0f, 20.0f, 50.0f, 50.0f)];
    view2.backgroundColor = [UIColor whiteColor];
    [view1 addSubview:view2];
    [self.view addSubview:view1];
    
    // converRect: toView
    CGRect rect1 = [view1 convertRect:CGRectMake(30.0f, 20.0f, 50.0f, 50.0f) toView:view2]; // 将view1中的frame转换成在view2中的frame
    CGPoint point1 = [view1 convertPoint:CGPointMake(30.0f, 20.0f) toView:view2];           // 将view1中的point转换成在view2中的point
    NSLog(@"rect1:(%f,%f,%f,%f)",rect1.origin.x,rect1.origin.y,rect1.size.width,rect1.size.height);
    NSLog(@"point1:(%f,%f)",point1.x,point1.y);
    
    // converRect: fromView
    CGRect rect2 = [view2 convertRect:CGRectMake(30.0f, 20.0f, 50.0f, 50.0f) fromView:view1]; // 将view1中的frame转换成在view2中的frame(同上)
    CGPoint point2 = [view2 convertPoint:CGPointMake(30.0f, 20.0f) fromView:view1];           // 将view1中的point转换成在view2中的point(同上)
    NSLog(@"rect2:(%f,%f,%f,%f)",rect2.origin.x,rect2.origin.y,rect2.size.width,rect2.size.height);
    NSLog(@"point2:(%f,%f)",point2.x,point2.y);
    
    // 特殊
    CGRect rect = [view1 convertRect:CGRectMake(30.0f, 20.0f, 50.0f, 50.0f) toView:nil];     // 这view1中的frame转换成基于窗口坐标的frame
    NSLog(@"rect:(%f,%f,%f,%f)",rect.origin.x,rect.origin.y,rect.size.width,rect.size.height);
    
    [view1 release];
    [view2 release];
}

输出结果:


结论:

1、A convert xxx to B / B convert xxx from A 将视图A中的坐标系统转换成视图B中的坐标系统;

2、A convert xxx to B,B为nil时将视图A中的坐标系统转换成窗口的坐标系统。


分享到:
评论

相关推荐

    C#实现坐标转换

    4. **程序架构**:在设计程序时,可以采用MVC(模型-视图-控制器)架构,其中模型负责坐标转换的计算,视图负责展示用户界面,控制器则协调两者之间的交互。这样可以使代码结构清晰,易于维护。 5. **异常处理**:...

    地理坐标和屏幕坐标转换

    在给定的代码中,我们可以看到三个方法,分别用于将地理坐标转换为屏幕坐标,地图坐标(一种特殊类型的地理坐标)转换为页面布局坐标,以及页面布局坐标转换回地图坐标。这些方法在ArcGIS ADF(ArcGIS Desktop ...

    VC++在屏幕坐标和窗口坐标之间转换

    在这种情况下,可能需要结合使用`GetWindowRect()`和`GetClientRect()`函数获取窗口的屏幕边界和客户区域边界,然后再进行坐标转换。 为了更好地理解这些概念,下面是一段示例代码,展示了如何在VC++中进行屏幕坐标...

    VC坐标转换和绘制曲线

    ### VC坐标转换与绘制曲线详解 #### 一、概述 在Windows编程中,尤其是在使用Visual C++进行图形界面开发时,经常会遇到需要自定义绘制图形的情况。本文将详细介绍如何通过Visual C++(简称VC)实现坐标转换以及...

    SuperMap Objects Java 点坐标投影转换

    在实际应用中,例如在pointsCoordinateTrans这个示例中,可能包含了一系列点的坐标转换操作,可能涉及批量转换多个点,或者是在不同的地图图层之间进行坐标转换。这可能涉及到读取数据,比如从数据库或者文件中,...

    Tsai.rar_tsai_三维坐标转换_图像坐标_图像坐标转换

    在计算机视觉和图像处理领域,坐标转换是一个至关重要的概念,特别是在进行三维重建或者机器人定位时。本主题将详细探讨“Tsai法”在三维坐标转换中的应用,以及它如何帮助我们进行图像坐标到世界坐标的转换。 Tsai...

    SplitterWindow滚动条&视图分割与同步更新&设备与逻辑坐标转换

    在本文中,我们将深入探讨"SplitterWindow滚动条&视图分割与同步更新&设备与逻辑坐标转换"这一主题,这是在VC++编程环境中经常遇到的技术挑战。SplitterWindow是Windows应用程序开发中的一个重要组件,它允许用户...

    ARCGIS中坐标转换及地理坐标、投影坐标定义

    ### ARCGIS中坐标转换及地理坐标、投影坐标定义 #### 一、动态投影(ArcMap) 在ARCGIS中,动态投影是一个非常实用的功能,它允许用户在不同的坐标系统之间无缝切换,使得多源数据的集成变得更为简单。动态投影的...

    OpenGL之坐标转换

    - **视图坐标转换**:通过视图矩阵乘以世界坐标系中的顶点坐标,得到相机坐标系中的坐标。 **ModelView变换矩阵**:在OpenGL中,模型变换和视图变换通常被合并为一个单一的矩阵,即ModelView矩阵。这个矩阵负责将...

    zuobiaozhuanhuan.zip_坐标转换 软件

    坐标转换的主要目的是将一种坐标系下的地理位置数据转换到另一种坐标系下,以确保在不同系统间的数据兼容性和准确性。 坐标系是描述地球表面位置的标准框架,常见的有笛卡尔坐标系、极坐标系以及地理坐标系等。在...

    bianhua.rar_坐标 转换

    在3D场景中,这一过程会将3D坐标转换为2D视图,使得远近物体有不同的大小,以模拟深度感。 3. **视口变换**:将NDC坐标映射到窗口或帧缓冲区,这是实际渲染发生的区域。这通常涉及缩放和位移操作,确保NDC坐标能...

    3D 模型坐标和屏幕坐标之间转换.txt

    视图变换是将世界坐标转换到相机坐标的过程,也就是将3D场景从世界空间变换到观察者或相机看到的空间。这通常涉及到应用一个视图矩阵,该矩阵包含了相机的位置、目标点和上方向向量等信息。视图变换后的坐标系是以...

    如何把OpenGL中3D坐标转换成2D坐标

    首先,要了解OpenGL的图形渲染管线是如何将3D坐标转换为2D坐标。这个过程大体上可以分为两步:首先是将3D坐标投影到一个二维视平面上,随后将该视平面映射到屏幕像素坐标。3D坐标通常由三个分量(x,y,z)组成,而...

    iOS开发中常见坐标系之间的转换,精确度高

    2. **屏幕到视图坐标转换**:对应的,我们可以使用`convert(_:from:)`方法,例如`view.convert(point, from: nil)`将屏幕坐标转换回视图坐标。 3. **模型到视图坐标转换**:在Core Graphics或SceneKit等框架中,...

    用户坐标、视图坐标、Java awt坐标概念的建立和应用.doc

    这与许多其他编程环境中的坐标系统不同,因此在进行图形绘制时,需要将用户坐标或视图坐标转换为Java AWT坐标。 在实验中,学生需要编写算法来实现这些坐标间的转换,以及利用这些转换进行图形的绘制。例如,提供的...

    求局部坐标系到世界坐标系的转换矩阵

    通过应用转换矩阵,我们可以将物体的局部坐标转换到世界坐标,从而进行碰撞检测的计算。 总之,局部坐标系到世界坐标系的转换是通过刚体转换矩阵实现的,它结合了旋转和平移的信息,使得物体能够在三维空间中准确地...

    Qt坐标系转换(绘制逻辑坐标系)

    世界坐标系原点在视图左上角,本例子通过世界坐标转换,将坐标原点定位在视图中央,Y轴向上,X轴向右,并绘制坐标轴,基于逻辑坐标系下的绘图,可将转换关系函数取消生效,对比世界坐标系下的绘图。 重写...

    Android坐标转换.zip

    在Android开发中,坐标转换是一项重要的任务,尤其是在处理地图、触摸事件或者图形绘制时。Android系统使用了多种坐标系统,包括设备坐标系、屏幕坐标系、像素坐标系以及OpenGL坐标系等,这些坐标系在不同的场景下有...

    iOS学习教程之UIView中坐标转换详解

    在进行坐标转换时,我们经常需要处理的问题是视图间的相对位置,例如判断两个视图是否重叠或确定一个点相对于另一个视图的位置。 对于判断视图重叠,我们可以使用如下的函数: 1. CGRectContainsRect(rect1, rect2)...

    matlab模型顶点与像素坐标转换计算

    这个过程涉及到从三维空间到二维屏幕的投影,以及从世界坐标到视图坐标再到设备坐标(像素坐标)的转换。在MATLAB中,我们可以使用内置的图形函数和自定义代码来实现这种转换。 标题"matlab模型顶点与像素坐标转换...

Global site tag (gtag.js) - Google Analytics