如何从CGPoint开始和结束指定一个矩形?

时间:2018-01-08 04:44:41

标签: xamarin linear-gradients drawrectangle cggradientref

我有一个矩形边界(10,20,100,200),CGPoints是StartPoint(0.5,0.5),EndPoints是(1,1)。从这些方面如何计算细分界限?我需要为CGGradient应用此边界作为起点和终点。

例如代码:

GradientColor gradientColor1 = new GradientColor(){StartPoint = new CGPoint(0.5, 0), EndPoint= new CGPoint(0.5, 1)};

GradientStop stop1 = new GradientStop() { Color = UIColor.Red, Offset = 0.1f };
GradientStop stop2 = new GradientStop() { Color = UIColor.Blue, Offset = 0.9f };
你可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

这是一个在当前CGContext中创建从左到右线性渐变的示例。

using (var context = UIGraphics.GetCurrentContext ()) {
    context.SaveState();
    var startPoint = new CGPoint(rect.Left, 0);
    var endPoint = new CGPoint(rect.Right, 0);
    var components = new CGColor[] { UIColor.Red.CGColor, UIColor.Blue.CGColor };

    using (var rgb = CGColorSpace.CreateDeviceRGB()) {
        var gradient = new CGGradient(rgb, components);
        context.DrawLinearGradient(gradient, startPoint, endPoint, CGGradientDrawingOptions.DrawsBeforeStartLocation);
    };
    context.RestoreState();
}

更改起点和终点可以使渐变颜色从右到左,上/下,对角等等。

enter image description here