黑马程序员--关于控件平移缩放旋转的总结

原创 2015年07月11日 10:33:19

 frame:只能修改图片的大小、位置

 center:只能修改位置

 bounds:只能修改大小 

 transform:可以实现空间的平移、旋转、缩放

 第一:frame:只能修改图片的大小、位置

首先看下frame的类型为CGRect结构体

@property CGRect frame;
struct CGRect {
  CGPoint origin;
  CGSize size;
};
typedef struct CGRect CGRect;
/* Points. */

struct CGPoint {
  CGFloat x;
  CGFloat y;
};
typedef struct CGPoint CGPoint;

/* Sizes. */

struct CGSize {
  CGFloat width;
  CGFloat height;
};
typedef struct CGSize CGSize;
通过frame修改控件位置、大小需要执行以下操作

1、获取frame

2、修改frame

3、重新赋值

例如:

    //1)通过frame改变大小和位置:frame表示左上角坐标
    {
//    //1)获取frame
//    
//    CGRect originFrame=self.btnIcon.frame;
//    
//    //2)设置
//    switch (sender.tag)
//    {
//        case 10://上
//            originFrame.origin.y -=10;
//            break;
//        
//        case 20://右
//              originFrame.origin.x +=10;
//            break;
//        case 30://下
//              originFrame.origin.y +=10;
//            break;
//        case 40://做
//             originFrame.origin.x -=10;
//            break;
//        default:
//            break;
//    }
//    //3)赋值
//    self.btnIcon.frame=originFrame;
    }
    //通过frame修改控件大小
    //取值
    CGRect  sizeFrame=  self.btnIcon.frame;
    //修改
    sizeFrame.size.height+=10;
    sizeFrame.size.width+=20;
    //重新赋值
    self.btnIcon.frame=sizeFrame;

center:只能修改位置

通过center修改中心点坐标,移动位置:center表示图片中心点坐标
    {
        
    CGPoint centerPoint=self.btnIcon.center;
    
        //2)设置
        switch (sender.tag)
        {
            case 10://上
              centerPoint.y -=10;
                break;
    
            case 20://右
                  centerPoint.x +=10;
                break;
            case 30://下
                  centerPoint.y +=10;
                break;
            case 40://做
                 centerPoint.x -=10;
                break;
            default:
                break;
        }
        //3)赋值
        self.btnIcon.center=centerPoint;
bounds只能改变控件大小
   //通过bounts修改图片大小.虽然bounds也是CGRect类型,但是x,y的值始终为0,所以只能修改大小,不能移动
//    //1) 获取bounts结构体值
//    CGRect originBounts=  self.btnIcon.bounds;
//    //2)修改大小
//    switch (sender.tag) {
//        case 10:
//            originBounts.size.height +=10;
//            originBounts.size.width +=10;
//            break;
//        case 20:
//            originBounts.size.height -=10;
//            originBounts.size.width -=10;
//            break;
//        default:
//            break;
//    }
    //第一种方法:重新赋值(无动画效果)
   // self.btnIcon.bounds=originBounts;
transform:平移、旋转、缩放
基于开始值平移、缩放、旋转,仅能修改一次

    CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty);

    CGAffineTransformMakeRotation(CGFloat angle);

    CGAffineTransformMakeScale(CGFloat sx, CGFloat sy);

基于原来值再修改,可以多次

    CGAffineTransformTranslate(CGAffineTransform t, CGFloat tx, CGFloat ty)

    CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy)

    CGAffineTransformRotate(CGAffineTransform t, CGFloat angle)


清楚所有的额设置

 view.transform =CGAffineTransformIdentity


    //在原有的基础上平移,仅平移一次
    //self.itn.transform=CGAffineTransformMakeTranslation(0, 40);
    //基于原来值再进行平移
    self.itn.transform=CGAffineTransformTranslate( self.itn.transform, 20, 40);

- (IBAction)scale {
    //基于原有值仅缩放一次
    //CGAffineTransformMakeScale(CGFloat sx, <#CGFloat sy#>)
    //<#CGFloat sx#> :为放大倍数,不变为1.0,放大则大于1.0,缩小为小于1.0
  //  self.itn.transform=CGAffineTransformMakeScale(1.4, 1.6)
    
    //基于现有值缩放
    self.itn.transform=CGAffineTransformScale(self.itn.transform, 1.4, 0.8);
}

- (IBAction)makeRotate {
    //基于开始值仅旋转一次
    //CGAffineTransformMakeRotation(<#CGFloat angle#>)
    //<#CGFloat angle#>:为旋转的弧度
    //M_PI_4:π/4
    //self.itn.transform=CGAffineTransformMakeRotation(M_PI_4);
    //基于现有值旋转
   // self.itn.transform=CGAffineTransformRotate(self.itn.transform, M_PI_4);
    //基于动画的旋转
    
    [UIView animateWithDuration:2.5 animations:^{
    self.itn.transform=CGAffineTransformRotate(self.itn.transform, M_PI_4);
        self.itn.transform=CGAffineTransformScale(self.itn.transform, 1.4, 0.8);
        self.itn.transform=CGAffineTransformTranslate( self.itn.transform, 20, 70);
       
    }];
}









 

ios如何旋转,缩放,平移控件

iOS中利用控件transform属性进行旋转,缩放,移动。 其中CGAffineTransform是一结构体类型,transform属性即,由上述结构体可知默认的transform属性为CGAf...

VS2010-MFC:用OpenGL在对话框中的PictureControl(图片控件)中绘制三维模型,可旋转、平移、缩放,可用于三维模型的预览

由于有这个需求,就是当在对话框设置一些数值的时候,可以在对话框上预览三维图像。 (1)生成一个基于对话框的程序,或者直接在单文档或者多文档上插入一个对话框,生成一个新的对话框类CGridingDlg,...

UIKit---UIButton状态,平移,缩放,代码方式动态添加控件

UIButton状态 按钮属性中: 1.image->button上的小图标                        2.background—>背景图片 一般按钮默认长按的时候会变灰色,要切换...

图像平移、旋转、缩放

  • 2015年09月29日 10:21
  • 611KB
  • 下载

【Android开发】View的平移、缩放、旋转以及位置、坐标系

图片并茂详细介绍View的Scroll、Scale、Translation、Rotation,看完之后,你将会熟悉scrollTo()、scrollBy()、setScrollX、setScrollY...
  • eieihihi
  • eieihihi
  • 2015年05月12日 13:15
  • 21709

【转】 Qt绘图,显示图片图像,平移,缩放,旋转和扭曲图片的方法 声明:本

声明:本文原创于yafeilinux的百度博客,http://hi.baidu.com/yafeilinux 转载请注明出处。 现在我们来实现在窗口上显示图片,并学习怎样将图片进行平移,缩放,旋...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员--关于控件平移缩放旋转的总结
举报原因:
原因补充:

(最多只允许输入30个字)