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绘制矩形变换的主要内容,如果未能解决你的问题,请参考以下文章

如何计算偏移量以绘制到画布中应用了比例变换的最近像素?

「AI教程」轻松绘制扇形渐变

圆角矩形框绘制-iOS

如何在 Xamarin.iOS 中绘制圆角矩形?

拖动并缩放使用 UIBezierPath IOS/Swift 绘制的矩形

shader编程-二维空间中使用矩阵实现物体的旋转缩放平移变换(WebGL-Shader开发基础03)