recttransform 取长宽怎么从代码修改参数

记录我的点点滴滴!
unity出了一套比之前好用的UI系统,但是也新出了RectTransform,PosX,PosY....,刚开始可能不知道怎么用代码去更改,但是经过许多的实验之后就会明白一些:
1.改变RectTransform的top
GetComponent&RectTransform&().offsetMax = new Vector2(GetComponent&RectTransform&().offsetMax.x, top);
2.改变RectTransform的bottom
GetComponent&RectTransform&().offsetMin...
不会写shader可以看看。
今天在网上发现一个shader透明的很简单的方法:
创建物体之后添加材质就可以选择shader,选择transparant-&Diffuse。然后就可以在color中使用RGBA控制物体的颜色和透明度。
转至:http://blog.csdn.net/miaoweiye/article/details/8559615
iTween.MoveTo():&让模型移动到一个位置,它的底层函数是通过动态的修改模型每一帧的transform.position完成的,所以它会百分之百到达目标点,不会出现误差。
iTween.MoveFrom():它和上面的一样,iTween.MoveTo()是将模型移动到目标位置,而iTween.MoveFrom()是将模型从目标位置移动到原始位置。
iTween.MoveAdd()&和iTween....
Beautiful Pixels 评出的 2013 年最佳 UI 动画
在游戏制作中,我们会一定会添加游戏背景音乐、添加一些其他的游戏音效。在用Unity开发的时候,我们必须面对一个问题,怎么样添加这些音效?当然在Unity开发中又会有两种类型的游戏开发(2D跟3D),所以不同的游戏类型,音效的模式也是不一样的。2D游戏音效是跟Audio &
Listener的距离是无关的,但是在3D场景中,音效就这个就跟Audio Listener有关了。其实Audio Listener就相当于一个聆听者,在3D场景中越靠近聆听者,声音会越大声,离聆听者越远,听见的声音越小,在2D游戏中,音效跟这个Audio Listener...
&&&&&&&在用Unity3D开发游戏中,我们会经常创建多个场景,但是在场景过度的时候,通常场景中的对象会被删除。所以Unity3D给了我们一个不删除前一个场景中的某一个对象或者脚本的API,那就是“DontDestoryOnLoad(对象或者某个脚本)”。但是我们在用这个API的时候我们会发现一个很奇怪的问题就是:如果A里面放了个东西o,当到场景B的时候,o 也会出现在B场景中,这里一看,感觉还是对的,然后你再返回到场景A,&你就会惊讶的发现,A里面出现了两个o,然后你到...
用Unity3D开发的人员都知道NGUI在UI制作方面是一个强大的的插件,当然里面也有Scorll View的制作例子。在这里我来和大家交流交流我在开发中运用NGUI的一些心得!
首先,我们知道NGUI自己有一套树形的层级关系图,很多时候我们只能在这些树形的层级结构下创建一些NGUI实例。其实在这个层级关系图中最重要的就是NGUI给我们提供的那些脚本和方法,只要了解了这些脚本和方法,你可以任意的改变这些层级结构。
今天我在这儿来改变NGUI的树形结构来对NGUI中Scorll View的实现来讲一个简洁版的。在改变层级结构之前,我们要清楚的知道,...
if (Input.touchCount&& 0 && Input.GetTouch(0).phase == TouchPhase.Began )
&&&&&&&&&&& Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);...
单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类
单例模式(singleton)顾名思义,就是只有一个实例。
作为对象的创建模式[GOF95],&单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
单例模式的要点
  显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。在下面的对象图中,有一个&单例对象&,而&客户甲...
using UnityE
using System.C
using System.T
public class MyThread
string thrdN
public MyThread(string nam)
&&&& count = 0;
& thrdName =
public void run()
& Debug.Log(&...
&&&|&Powered byRectTransform 怎么从代码修改参数_百度知道
RectTransform 怎么从代码修改参数
提问者采纳
sizeDelta = new Vector2(200;rectTRectTransform&gt:rectTransform = GetComponent&lt, 50)rectTransform = GetComponent&lt, 60;RectTransform&().localPosition = new Vector3(200;rectTransform您好, 0), 60, 0), 50),这样的;================================================localPosition = new Vector3(200;();  rectT  rectTransform
其他类似问题
为您推荐:
阿里巴巴国际站的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Unity UI大小动态设置(Resize Unity UI RectTransform) - 简书
下载简书移动应用
写了2630字,被18人关注,获得了9个喜欢
Unity UI大小动态设置(Resize Unity UI RectTransform)
我们在开发过程中发现,要调整Unity UI元素的大小,RectTransform提供了sizeDelta属性可以用来动态修改RectTransform的大小,但同时我们也google到另外一个修改RectTransform大小的方法,方法如下:
public static void SetRectTransformSize(RectTransform trans, Vector2 newSize)
Vector2 oldSize = trans.rect.
Vector2 deltaSize = newSize - oldS
trans.offsetMin = trans.offsetMin - new Vector2(deltaSize.x * trans.pivot.x, deltaSize.y * trans.pivot.y);
trans.offsetMax = trans.offsetMax + new Vector2(deltaSize.x * (1f - trans.pivot.x), deltaSize.y * (1f - trans.pivot.y));
那RectTransform.sizeDelta和这个自定义的SetRectTransformSize有没有差别?差别在哪儿?我们做了下实验来测试:新建一个场景,放入四个按钮
其中deltaSize和resize按钮的Anchors四个点重合,deltaSizeWithCustomAnc和resizeWithCustomAnc按钮的四个点不重合
然后挂载一个脚本,在点击change按钮的时候修改上边四个按钮的大小:
using UnityE
using System.C
using UnityEngine.UI;
public class ResizeTestController : MonoBehaviour {
public RectTransform deltaSizeB
public RectTransform resizeB
public RectTransform deltaSizeDiffAncB
public RectTransform resizeDiffAncB
Vector2 newSize =new Vector2(300f,50f);
public void Change(){
//Anchors在同一点的button
deltaSizeBtn.sizeDelta = newS
U3DUtils.SetRectTransformSize(resizeBtn, newSize);
//Anchors不在同一点的button
deltaSizeDiffAncBtn.sizeDelta = newS
U3DUtils.SetRectTransformSize(resizeDiffAncBtn, newSize);
点击Change按钮后:
我们可以看到按钮deltaSizeWithCustomAnc的大小与众不同,说明sizeDelta属性的计算过程跟SetRectTransformSize是不一样的,Unity官方文档对sizeDelta的说明:大概意思是Anchors在同一点的时候,sizeDelta相当于设置长宽,但是Anchors不在同一点时,表示的只是比Anchors矩形大或者小多少。
那么sizeDelta具体又是怎么转换到trans.offsetMin和trans.offsetMax的呢?
如上图,left
+ right刚好是我们设置的300的-1倍:-300, top + bottom也是刚好-50(负数的意思是比Anchors矩形大;正数就是Anchors矩形内,就是比Anchros矩形小)。那可以猜测(看源代码没找到sizeDelta最终计算的地方,?)sizeDelta的计算方法是与anchors有关的,当然还与Pivot有关(可以自己测试下看看),写个模拟方法来验证下:
public static void SetRectTransformDeltaSize(RectTransform trans, Vector2 newSize)
var x = -newSize.x - trans.offsetMin.x + trans.offsetMax.x;
var y = -newSize.y - trans.offsetMin.y + trans.offsetMax.y;
trans.offsetMin = new Vector2( trans.offsetMin.x + trans.pivot.x * x, trans.offsetMin.y + trans.pivot.y * y);
trans.offsetMax = new Vector2( -(-trans.offsetMax.x + (1-trans.pivot.x) * x),-(-trans.offsetMax.y + (1-trans.pivot.y) * y));
直接看可能不容易明白是什么意思,不过根据Unity的文档我们知道sizeDelta表示的是RectTransformd对象矩形大小比Pivot矩形大或者小多少,那么RectTransform的Left和Right之和就等于sizeDelta.x的-1倍,再考虑pivot,可以得到一个计算公式:
(Left + pivot.x *X) + (Right + (1-pivot.x) * X) =
- sizeDelta.x
其中X是要求出的变量,转换下公式就是:
- sizeDelta.x - Left - Right
Left == trans.offsetMin.x
Right == - trans.offsetMax.x
- sizeDelta.x - trans.offsetMin.x - (- trans.offsetMax.x)
那么新的Left就是Left + pivot.x X新的Right就是Right + (1-pivot.x)
XRight转回offsetMax.xx需要*-1
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
· 55人关注
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:UIGraphicsBeginImageContext创建一个基于位图的上下文(context),并将其设置为当前上下文(context)。方法声明如下void UIGraphicsBeginImageContext(CGSize size);size为新创建的位图上下文的大小。它同时是由UIGraphicsGetImageFromCurrentImageContext函数返回的图形大小。该函数的功能同UIGraphicsBeginImageContextWithOptions的功能相同,相当与UIGraphicsBeginImageContextWithOptions的opaque参数为NO,scale因子为1.0。UIGraphicsBeginImageContextWithOptions函数原型为:void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale);size——同UIGraphicsBeginImageContextopaque—透明开关,如果图形完全不用透明,设置为YES以优化位图的存储。scale—–缩放因子UIImageC处理1、等比缩放C代码&& & - (UIImage *) scaleImage:(UIImage *)image toScale:(float)scaleSize {UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize);[image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)];UIImage *scaledImage&= UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();return&scaledI}&2、自定义大小C代码&- (UIImage *) reSizeImage:(UIImage *)image toSize:(CGSize)reSize {UIGraphicsBeginImageContext(CGSizeMake(reSize.width, reSize.height));[image drawInRect:CGRectMake(0, 0, reSize.width, reSize.height)];UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();return&reSizeI}&3、处理某个特定的view只要是继承UIView的object 都可以处理必须先import QuzrtzCore.frameworkC代码&-(UIImage*) captureView:(UIView *)theView {CGRect rect = theView.UIGraphicsBeginImageContext(rect.size);CGContextRef context = UIGraphicsGetCurrentContext();[theView.layer renderInContext:context];UIImage *img = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();return&}&4、存储图片4.1、存储到app的文件里把要处理的图片以image.png的名字存储到app home地下的Document目录中&C代码&NSString *path = [[NSHomeDirectory()stringByAppendingPathComponent:@&Documents&]stringByAppendingPathComponent:@&image.png&];[UIImagePNGRepresentation(image) writeToFile:pathatomically:YES];4.2、存储到手机的图片库中C代码&CGImageRef screen = UIGetScreenImage();UIImage* image = [UIImage imageWithCGImage:screen];CGImageRelease(screen);UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);&&&获取当前app的名称和版本号C代码&NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];// app名称NSString *name = [infoDictionary objectForKey:@&CFBundleDisplayName&];// app版本NSString *version = [infoDictionary objectForKey:@&CFBundleShortVersionString&];// app build版本NSString *build = [infoDictionary objectForKey:@&CFBundleVersion&];&&UILabel根据text自动调整大小&C代码&label.text = @&**********&;CGRect frame = label.frame.size.height = 10000;&// 设置一个很大的高度label.frame =[label sizeToFit];frame.size.height = label.frame.size.label.frame =&&直接拨打有分机号的电话&C代码&[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@&tel://,3333&]];&一些有关图像处理的代码片段- (UIImage *)rescaleImage:(UIImage *)img ToSize:(CGSize) //图片缩放裁剪- (UIImage*)transformWidth:(CGFloat)width height:(CGFloat) //改变大小+ (UIImage *)addImage:(UIImage *)image1 toImage:(UIImage *)image2; //合并图片+ (UIImage *)imageFromImage:(UIImage *)image inRect:(CGRect) //裁剪部分图片+ (void)imageSavedToPhotosAlbum:(UIImage *)imagedidFinishSavingWithError:(NSError *)error contextInfo:(void *)contextI //保存图片到媒体库零)重新设置图片的尺寸- (UIImage *)rescaleImage:(UIImage *)img ToSize:(CGSize)size {CGRect rect = CGRectMake(0.0, 0.0, size.width, size.height);UIGraphicsBeginImageContext(rect.size);[img drawInRect:rect]; // scales image to rectUIImage *resImage = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();return resI}-)根据给定得图片,从其指定区域截取一张新得图片-(UIImage *)getImageFromImage{//大图bigImage//定义myImageRect,截图的区域CGRect myImageRect = CGRectMake(10.0, 10.0, 57.0, 57.0);UIImage* bigImage= [UIImage imageNamed:@&k00030.jpg&];CGImageRef imageRef = bigImage.CGICGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef, myImageRect);CGSsize.width = 57.0;size.height = 57.0;UIGraphicsBeginImageContext(size);CGContextRef context = UIGraphicsGetCurrentContext();CGContextDrawImage(context, myImageRect, subImageRef);UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];UIGraphicsEndImageContext();return smallI}二) 合并两张图片- (UIImage *)addImage:(UIImage *)image1 toImage:(UIImage *)image2 {UIGraphicsBeginImageContext(image1.size);// Draw image1[image1 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)];// Draw image2[image2 drawInRect:CGRectMake(0, 0, image2.size.width, image2.size.height)];UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();return&resultingI}三) 捕捉屏幕截图CALayer实例使用Core Graphics的renderInContext方法可以将视图绘制到图像上下文中以便转化为其他UIImage实例。前提先#import+ (UIImage *) imageFromView: (UIView *)theView { // draw a view's contents into an image context UIGraphicsBeginImageContext(theView.frame.size); CGContextRef context = UIGraphicsGetCurrentContext(); [theView.layer renderInContext:context]; UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return theI }注:UIGraphicsBeginImageContext(CGSize size)创建一个基于位图的上下文(context),并将其设置为当前上下文。函数功能与UIGraphicsBeginImageContextWithOptions相同,相当于该方法的opaque参数为NO,scale因子为1.0。而UIGraphicsEndImageContext()方法是移除栈顶的基于当前位图的图形上下文。视图添加倒影效果const CGFloat kReflectPercent = -0.25f; const CGFloat kReflectOpacity = 0.3f; const CGFloat kReflectDistance = 10.0f; + (void)addSimpleReflectionToView:(UIView *)theView { CALayer *reflectionLayer = [CALayer layer]; reflectionLayer.contents = [theView layer]. reflectionLayer.opacity = kReflectO reflectionLayer.frame = CGRectMake(0.0f,0.0f,theView.frame.size.width,theView.frame.size.height*kReflectPercent); //倒影层框架设置,其中高度是原视图的百分比 CATransform3D stransform = CATransform3DMakeScale(1.0f,-1.0f,1.0f); CATransform3D transform = CATransform3DTranslate(stransform,0.0f,-(kReflectDistance + theView.frame.size.height),0.0f); reflectionLayer.transform = reflectionLayer.sublayerTransform = reflectionLayer. [[theView layer] addSublayer:reflectionLayer]; }另一:使用Core Graphics创建倒影+ (CGImageRef) createGradientImage:(CGSize)size { CGFloat colors[] = {0.0,1.0,1.0,1.0}; //在灰色设备色彩上建立一渐变 CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); CGContextRef context = CGBitmapContextCreate(nil,size.width,size.height,8,0,colorSpace,kCGImageAlphaNone); CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace,colors,NULL,2); CGColorSpaceRelease(colorSpace); //绘制线性渐变 CGPoint p1 = CGPointZ CGPoint p2 = CGPointMake(0,size.height); CGContextDrawLinearGradient(context,gradient,p1,p2,kCGGradientDrawsAfterEndLocation); //Return the CGImage CGImageRef theCGImage = CGBitmapContextCreateImage(context); CFRelease(gradient); CGContextRelease(context); return theCGI }//Create a shrunken frame for the reflection+ (UIImage *) reflectionOfView:(UIView *)theView WithPercent:(CGFloat) percent { //Retain the width but shrink the height CGSize size = CGSizeMake(theView.frame.size.width, theView.frame.size.height * percent); //Shrink the View UIGraphicsBeginImageContext(size); CGContextRef context = UIGraphicsGetCurrentContext(); [theView.layer renderInContext:context]; UIImage *partialimg = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); //build the mask CGImageRef mask = [ImageHelper createGradientImage:size]; CGImageRef ref = CGImageCreateWithMask(partialimg.CGImage,mask); UIImage *theImage = [UIImage imageWithCGImage:ref]; CGImageRelease(ref); CGImageRelease(mask); return theI } const CGFloat kReflectDistance = 10.0f; + (void) addReflectionToView: (UIView *)theView { theView.clipsToBounds = NO; UIImageView *reflection = [[UIImageView alloc] initWithImage:[ImageHelper reflectionOfView:theView withPercent:0.45f]]; CGRect frame = reflection. frame.origin = CGPointMake(0.0f, theView.frame.size.height + kReflectDistance); reflection.frame = // add the reflection as a simple subview [theView addSubView:reflection]; [reflection release]; }关于图片缩放的线程安全和非线程安全操作.非线程安全的操作只能在主线程中进行操作,对于大图片的处理肯定会消耗大量的时间,如下面的方法方法&1:&使用&UIKit+ (UIImage*)imageWithImage INCLUDEPICTURE &/Mobile/UploadFiles_/15372.gif& /* MERGEFORMATINET UIImage*)image scaledToSize INCLUDEPICTURE &/Mobile/UploadFiles_/15372.gif& /* MERGEFORMATINET CGSize)newS{// Create a graphics image contextUIGraphicsBeginImageContext(newSize);// Tell the old image to draw in this new context, with the desired// new size[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];// Get the new image from the contextUIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();// End the contextUIGraphicsEndImageContext();// Return the new image.return newI}此方法很简单,&但是,这种方法不是线程安全的情况下.方法&2:&使用&CoreGraphics+ (UIImage*)imageWithImage INCLUDEPICTURE &/Mobile/UploadFiles_/15372.gif& /* MERGEFORMATINET UIImage*)sourceImage scaledToSize INCLUDEPICTURE &/Mobile/UploadFiles_/15372.gif& /* MERGEFORMATINET CGSize)newS{CGFloat targetWidth = targetSize.CGFloat targetHeight = targetSize.CGImageRef imageRef = [sourceImage CGImage];CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef);CGColorSpaceRef colorSpaceInfo = CGImageGetColorSpace(imageRef);if (bitmapInfo == kCGImageAlphaNone) {bitmapInfo = kCGImageAlphaNoneSkipLast;}CGContextRif (sourceImage.imageOrientation == UIImageOrientationUp ||sourceImage.imageOrientation == UIImageOrientationDown) {bitmap = CGBitmapContextCreate(NULL, targetWidth, targetHeight,CGImageGetBitsPerComponent(imageRef),CGImageGetBytesPerRow(imageRef), colorSpaceInfo, bitmapInfo);} else {bitmap = CGBitmapContextCreate(NULL, targetHeight, targetWidth,CGImageGetBitsPerComponent(imageRef),CGImageGetBytesPerRow(imageRef), colorSpaceInfo, bitmapInfo);}if (sourceImage.imageOrientation == UIImageOrientationLeft) {CGContextRotateCTM (bitmap, radians(90));CGContextTranslateCTM (bitmap, 0, -targetHeight);} else if (sourceImage.imageOrientation ==UIImageOrientationRight) {CGContextRotateCTM (bitmap, radians(-90));CGContextTranslateCTM (bitmap, -targetWidth, 0);} else if (sourceImage.imageOrientation == UIImageOrientationUp) {// NOTHING} else if (sourceImage.imageOrientation == UIImageOrientationDown){CGContextTranslateCTM (bitmap, targetWidth, targetHeight);CGContextRotateCTM (bitmap, radians(-180.));}CGContextDrawImage(bitmap, CGRectMake(0, 0, targetWidth,targetHeight), imageRef);CGImageRef ref = CGBitmapContextCreateImage(bitmap);UIImage* newImage = [UIImage imageWithCGImage:ref];CGContextRelease(bitmap);CGImageRelease(ref);return newI}这种方法的好处是它是线程安全,加上它负责的 (使用正确的颜色空间和位图信息,处理图像方向) 的小东西,UIKit 版本不会。如何调整和保持长宽比 (如 AspectFill 选项)?它是非常类似于上述,方法,它看起来像这样:+ (UIImage*)imageWithImage INCLUDEPICTURE &/Mobile/UploadFiles_/15372.gif& /* MERGEFORMATINET UIImage*)sourceImage scaledToSizeWithSameAspectRatio INCLUDEPICTURE &/Mobile/UploadFiles_/15372.gif& /* MERGEFORMATINET CGSize)targetS{CGSize imageSize = sourceImage.CGFloat width = imageSize.CGFloat height = imageSize.CGFloat targetWidth = targetSize.CGFloat targetHeight = targetSize.CGFloat scaleFactor = 0.0;CGFloat scaledWidth = targetWCGFloat scaledHeight = targetHCGPoint thumbnailPoint = CGPointMake(0.0,0.0);if (CGSizeEqualToSize(imageSize, targetSize) == NO) {CGFloat widthFactor = targetWidth /CGFloat heightFactor = targetHeight /if (widthFactor & heightFactor) {scaleFactor = widthF // scale to fit height}else {scaleFactor = heightF // scale to fit width}scaledWidth = width * scaleFscaledHeight = height * scaleF// center the imageif (widthFactor & heightFactor) {thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;}else if (widthFactor & heightFactor) {thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;}}CGImageRef imageRef = [sourceImage CGImage];CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef);CGColorSpaceRef colorSpaceInfo = CGImageGetColorSpace(imageRef);if (bitmapInfo == kCGImageAlphaNone) {bitmapInfo = kCGImageAlphaNoneSkipLast;}CGContextRif (sourceImage.imageOrientation == UIImageOrientationUp ||sourceImage.imageOrientation == UIImageOrientationDown) {bitmap = CGBitmapContextCreate(NULL, targetWidth, targetHeight,CGImageGetBitsPerComponent(imageRef),CGImageGetBytesPerRow(imageRef), colorSpaceInfo, bitmapInfo);} else {bitmap = CGBitmapContextCreate(NULL, targetHeight, targetWidth,CGImageGetBitsPerComponent(imageRef),CGImageGetBytesPerRow(imageRef), colorSpaceInfo, bitmapInfo);}// In the right or left cases, we need to switch scaledWidth and scaledHeight,// and also the thumbnail pointif (sourceImage.imageOrientation == UIImageOrientationLeft) {thumbnailPoint = CGPointMake(thumbnailPoint.y, thumbnailPoint.x);CGFloat oldScaledWidth = scaledWscaledWidth = scaledHscaledHeight = oldScaledWCGContextRotateCTM (bitmap, radians(90));CGContextTranslateCTM (bitmap, 0, -targetHeight);} else if (sourceImage.imageOrientation ==UIImageOrientationRight) {thumbnailPoint = CGPointMake(thumbnailPoint.y, thumbnailPoint.x);CGFloat oldScaledWidth = scaledWscaledWidth = scaledHscaledHeight = oldScaledWCGContextRotateCTM (bitmap, radians(-90));CGContextTranslateCTM (bitmap, -targetWidth, 0);} else if (sourceImage.imageOrientation == UIImageOrientationUp) {// NOTHING} else if (sourceImage.imageOrientation == UIImageOrientationDown){CGContextTranslateCTM (bitmap, targetWidth, targetHeight);CGContextRotateCTM (bitmap, radians(-180.));}CGContextDrawImage(bitmap, CGRectMake(thumbnailPoint.x,thumbnailPoint.y, scaledWidth, scaledHeight), imageRef);CGImageRef ref = CGBitmapContextCreateImage(bitmap);UIImage* newImage = [UIImage imageWithCGImage:ref];CGContextRelease(bitmap);CGImageRelease(ref);return newI}

我要回帖

更多关于 ugui recttransform 的文章

 

随机推荐