【问题标题】:How to specify a rectangle from the CGPoint Start and End?如何从 CGPoint 起点和终点指定一个矩形?
【发布时间】:2018-01-08 04:44:41
【问题描述】:

我有一个矩形边界 (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 };

你能帮我解决这个问题吗?

【问题讨论】:

  • 矩形边界:(10, 20, 100, 200);梯度点 = StartPoint(0.5, 0) 和 EndPoints (0.5, 1); GradientStops1 : 颜色 : UIColor.Red, Offset = 0.4; GradientStops2 : 颜色 : UIColor.Blue, Offset = 0.6;
  • @SushiHangover 格式化代码在查询中更新。
  • GradientColor/GradientStop 是 Windows 类而不是 iOS,你到底想用渐变做什么?创建CAGradientLayer?
  • 我在 iOS 中尝试使用 CGGradient?在我的上下文中自定义绘制developer.xamarin.com/api/member/…

标签: xamarin linear-gradients drawrectangle cggradientref


【解决方案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();
}

更改起点和终点,您可以从右到左、上/下、对角线等进行渐变绘制。

【讨论】:

    猜你喜欢
    • 2017-12-27
    • 2019-12-25
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 2013-05-09
    • 2014-01-03
    相关资源
    最近更新 更多