iOS绘制矩形变换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS绘制矩形变换相关的知识,希望对你有一定的参考价值。
参考技术A - (void)viewDidLoad[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
UIImageView* iv = [[UIImageView alloc]
initWithImage: [self drawImage:self.view.frame.size]];
[self.view addSubview:iv];
//旋转
CGAffineTransform CGAffineTransformMakeRotation ( CGFloat angle );
[UIView animateWithDuration:2.0
animations:^
iv.transform = CGAffineTransformRotate(CGAffineTransformScale(iv.transform, 0.2, 0.2), 1*M_PI); //缩放+旋转
];
CGAffineTransform CGAffineTransformMakeScale ( CGFloat sx, CGFloat sy );
//缩放
[UIView animateWithDuration:2.0
animations:^
iv.transform=CGAffineTransformScale(iv.transform, 2.0, 4.0); //实现的是放大和缩小
];
//平移
CGAffineTransform CGAffineTransformMakeTranslation ( CGFloat tx, CGFloat ty ); //平移
[UIView animateWithDuration:2.0
animations:^
iv.transform=CGAffineTransformTranslate(iv.transform, 3, 3); //平移
];
- (UIImage*) drawImage:(CGSize) size
// 创建内存中的图片
UIGraphicsBeginImageContext(size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 设置线宽
CGContextSetLineWidth(ctx, 8);
// ---------下面开始向内存中绘制图形---------
// 设置线条颜色
CGContextSetRGBStrokeColor(ctx, 0 , 1, 0 , 1);
// 绘制一个矩形边框
//CGContextStrokeRect(ctx , CGRectMake(30 , 30 , 120 , 60));
// 设置填充颜色
CGContextSetRGBFillColor(ctx, 1, 1, 0 , 1);
// 绘制一个矩形边框
CGContextFillRect(ctx , CGRectMake(20 , 300, 40 , 60));
// 设置线条颜色
CGContextSetRGBStrokeColor(ctx, 0, 1 , 1 , 1);
// 获取该绘图Context中的图片
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
// ---------结束绘图---------
UIGraphicsEndImageContext();
// 获取当前应用路径下的Documents目录下的指定文件名对应的文件路径
NSString *path = [[NSHomeDirectory()
stringByAppendingPathComponent:@"Documents"]
stringByAppendingPathComponent:@"newPng.png"];
// 保存PNG图片
[UIImagePNGRepresentation(newImage)
writeToFile:path atomically:YES];
return newImage;
如何在 Xamarin.iOS 中绘制圆角矩形?
【中文标题】如何在 Xamarin.iOS 中绘制圆角矩形?【英文标题】:How to draw a rounded rectangle in Xamarin.iOS? 【发布时间】:2017-06-10 18:43:17 【问题描述】:我想绘制一个带圆角的矩形,但我对这个平台很陌生,它与例如 WPF 或 UWP 确实不同。
我看过 Objective-C 中的示例,但我不知道如何翻译成 Xamarin.iOS。
【问题讨论】:
【参考方案1】:圆角填充矩形路径:
var rectanglePath = UIBezierPath.FromRoundedRect(new CGRect(0.0f, 0.0f, 200.0f, 100.0f), 50.0f);
UIColor.Red.SetFill();
rectanglePath.Fill();
使用 ImageContext 创建 UIImage:
UIGraphics.BeginImageContext(new CGSize(200.0f, 100.0f));
var rectanglePath = UIBezierPath.FromRoundedRect(new CGRect(0.0f, 0.0f, 200.0f, 100.0f), 50.0f);
UIColor.Red.SetFill();
rectanglePath.Fill();
var image = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
通过 UIView 子类:
public class RoundedBox : UIView
public RoundedBox()
public RoundedBox(Foundation.NSCoder coder) : base(coder)
public RoundedBox(Foundation.NSObjectFlag t) : base(t)
public RoundedBox(IntPtr handle) : base(handle)
public RoundedBox(CoreGraphics.CGRect frame) : base(frame)
public override void Draw(CGRect rect)
var rectanglePath = UIBezierPath.FromRoundedRect(rect, 50.0f);
UIColor.Red.SetFill();
rectanglePath.Fill();
【讨论】:
非常感谢!以防万一,你能看看我关于绘制文本的另一个问题吗? ***.com/questions/44400322/…以上是关于iOS绘制矩形变换的主要内容,如果未能解决你的问题,请参考以下文章