Tag: cgaffinetransform

使用CGAffineTransform偏斜UIImageView

我试图扭曲一个矩形,所以两个垂直边是倾斜的,但平行,顶部和底部是水平的。 我正在尝试使用CGAffineTransform并已经find这个代码,但是我不知道要在各个部分放什么。 imageView.layer.somethingMagic.imageRightTop = (CGPoint){ 230, 30 }; imageView.layer.somethingMagic.imageRightBottom = (CGPoint){ 300, 150 }; #define CGAffineTransformDistort(t, x, y) (CGAffineTransformConcat(t, CGAffineTransformMake(1, y, x, 1, 0, 0))) #define CGAffineTransformMakeDistort(x, y) (CGAffineTransformDistort(CGAffineTransformIdentity, x, y)) 虽然说这很容易,但我不知道在不同的地方放什么东西。 我认为图像视图将成为我想要改变的东西,然而什么东西变成了魔法。 和imageRightTop和imageRightBottom。 另外我怎么定义吨。 如果有更彻底的解释,我将不胜感激,因为在大多数情况下,我只find这个解释如何做歪斜矩形。 谢谢

UIView旋转45°消失?

也许我不明白 当我做 self.tweetPeak.transform = CGAffineTransformMakeRotation(RADIANS(45)); RADIAN在哪里 #define RADIANS(degrees) ((degrees * M_PI) / 180.0) 在一个简单的UIView对象上它将消失。 我猜这只是为了看清楚。 我的印象是,在20到45度之间的范围内,视图变小了。 它是什么? 我试图设置视图不透明。 没有效果。 克里斯

检查CGRect是否包含在另一个(已转换的)矩形中

我正在实现裁剪function,并试图弄清楚如何testing裁剪矩形是否完全包含在转换后的图像视图中。 即在图像的裁剪部分中不应该有空格。 我试图复制在这个组件中实现的行为: https : //github.com/heitorfr/ios-image-editor ,它实现了类似的检查(见下文),但我不能得到它的工作我的情况。 – (void)checkBoundsWithTransform:(CGAffineTransform)transform { CGRect r1 = [self boundingBoxForRect:self.preview.cropRect rotatedByRadians:[self imageRotation]]; Rectangle r2 = [self applyTransform:transform toRect:self.preview.initialImageFrame]; CGAffineTransform t = CGAffineTransformMakeTranslation(CGRectGetMidX(self.preview.cropRect), CGRectGetMidY(self.preview.cropRect)); t = CGAffineTransformRotate(t, -[self imageRotation]); t = CGAffineTransformTranslate(t, -CGRectGetMidX(self.preview.cropRect), – CGRectGetMidY(self.preview.cropRect)); Rectangle r3 = [self applyTransform:t toRectangle:r2]; if(CGRectContainsRect([self CGRectFromRectangle:r3],r1)) { self.validTransform = transform; } }

当我尝试在多达100个图像上执行旋转屏幕时,CIIImage会泄漏

当我使用下面的方法(在ARC下)内存分配迅速增长到125 Mo以上。 我已经使用CGImage来实现它,但是速度很慢。 imageArray包含125个大小为640×80的UIImage。 -(void)rotateAndTransform{ int j=0; context = [CIContext contextWithOptions:nil]; for(UIImage* item in imageArray) { CGImageRef intermed =[item CGImage]; CIImage *begin = [CIImage imageWithCGImage:intermed]; CGAffineTransform transform = CGAffineTransformMakeRotation(-M_PI/2); CIImage *outputImage = [ begin imageByApplyingTransform:transform]; CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]]; UIImage *newImg = [UIImage imageWithCGImage:cgimg]; CGImageRelease(cgimg); [self.imagesFromExtract addObject:newImg]; j++; } }

iOS上的仿射变换旋转的奇怪行为

我想做一个相当简单的UIImageView旋转。 基本上,我有一个完美的方形图像轮的形象,我想旋转animation下。 所以我试过这个: – (void)testButtonPressed:(id)sender { NSLog(@"Test button pressed"); CGAffineTransform transform = CGAffineTransformMakeRotation(1.0); [UIView animateWithDuration:10.0 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ dial.transform = transform; // "dial" is a UIImageView } completion: ^(BOOL finished){ }]; } 会发生的是,当animation开始时,图像(大约300平方米)立即跳起了50-100像素,被“挤压”成一个狭窄的椭圆形。 之后,animation进行得很好。 我尝试使用beginAnimation而得到相同的行为。 我明白,我不了解旋转起源的东西(文中的圈子),但挤压看起来很奇怪,事实上这一切都是立即发生的(对于animation)是奇怪的。 有任何想法吗? (这是在Xcode 4.5.1的iPhone 6.0模拟器上运行,可能只是一个模拟器的东西?) 更新:我有一个机会多一点工作(我做它之间的“真正的”工作)。 我创build了一个新的XIB,从来没有自动布局和轮是“正常的”,但背景是垂直压缩。 然后有点灵感。 我注意到图像视图在NLog转储中被标记为“autoresize”。 没有看到一种方法来从IBclosures,但确实看到你可以closures主视图上的“Autoresize Subviews”。 这是否和performance完美! 我在想,为自动布局引入的一些新function是这里的罪魁祸首。 不过不知道,如果我已经find了所有的魔法设置。 但是…仍然存在这样的问题:即使在closures任何东西的“不透明”之后,我的图像的“透明”部分在iPad上仍然是黑色的。 更新:我终于明白,我的图像是在JPG 24位模式,而不是32位模式。 这在模拟器上工作 – 纯黑色被解释为透明。 […]

绘图时将变换应用于UIImage

试图将可缩放或旋转的较小图像叠加在较大的图像上: + (UIImage*)addToImage:(UIImage *)baseImage newImage:(UIImage*)newImage atPoint:(CGPoint)point transform:(CGAffineTransform)transform { UIGraphicsBeginImageContext(baseImage.size); [baseImage drawInRect:CGRectMake(0, 0, baseImage.size.width, baseImage.size.height)]; [newImage drawAtPoint:point]; //How would I apply the transform? UIImage* result = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return result; } 在这种情况下,我将如何将CGAffineTransform应用于newImage?

iOS:在屏幕上镜像内容

我想知道是否有可能在同一个设备中翻转一个UIView的内容; 不是指外部显示器,而是指设备本身。 我已经search了一下谷歌,但我能find的是外部屏幕。

如何在旋转的UIView中使用CGRectContainsPoint()

我有一个UIView ,用户可以点击UIView “select”或突出显示它所代表的应用程序内的“事物”。 我使用CGRectContainsPoint(thing.frame,tapPoint)来实现这一点,其中thing.frame是UIView的框架,而tapPoint是tapPoint中的轻敲点。 这工作完美。 ..通过设置transform属性(具有CGAffineTransform值)旋转UIView时。 当UIView像这样旋转时,该frame变成封装旋转视图的扁平正方形。 下面是这个问题的例子(框架属性被标记为A,而可视化的UIView框架被标记为B): 不旋转时 +——————+ | A == B | +——————+ 旋转时 +—————–+ | A . | | . . | | . . | | . . | | . B . | | . . | | . . | | . | +—————–+ 我想要捕获位于rect B ( UIView的真实边界,旋转的)范围内的水龙头,但不是当它们仅在rect […]

UIView绘制矩形保留的以前的绘图,并不清除view.transform

我有以下代码显示在UIView中的标记。 标记显示很好,一旦我们尝试使用变换捏缩放和缩放UIView,即使在调用setNeedsDisplay之后,第一个绘图仍然保持原样。 我的自定义UIView子类有以下代码 – (void)drawRect:(CGRect)rect { // Drawing code CGFloat w=20.0f; CGFloat h=8.0f; CGContextRef context=UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor); CGContextClearRect(context,self.bounds); CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); CGContextSetLineCap(context, 2.0); CGMutablePathRef leftMarker=CGPathCreateMutable(); CGPathMoveToPoint(leftMarker, NULL, 0, 0); CGPathAddLineToPoint(leftMarker, NULL, w, 0); CGPathAddLineToPoint(leftMarker,NULL, w, h); CGPathAddLineToPoint(leftMarker,NULL, h, h); CGPathAddLineToPoint(leftMarker,NULL,h, w); CGPathAddLineToPoint(leftMarker,NULL,0, w); CGPathAddLineToPoint(leftMarker,NULL, 0, 0); CGContextAddPath(context, leftMarker); CGContextDrawPath(context, kCGPathFill); const CGAffineTransform rightMarkerTransform=CGAffineTransformMakeRotateTranslate(DEGREES_TO_RADIANS(90),self.frame.size.width,0); CGPathRef […]

UIKitdynamic与现有的仿射变换

我有一个观点,有一些规模的转变。 当我在其上应用一些UIKit Dynamics时,它将它们清零。 /:如何在视图中保留现有的转换? :P 谢谢。 🙂