0

我正在使用“DrawLinearGradient”函数绘制渐变线。但是我使用的 2 种颜色并没有在一条线上平均划分。

CGColorSpace colorSpace = CGColorSpace.CreateDeviceRGB();
CGColor[] colors = {UIColor.Red.CGColor,UIColor.Green.CGColor};
float[] locations = {0.0f,0.5f,0.5f,1.0f};

CGGradient gradient = new CGGradient(colorSpace,colors,locations);
ColorMessage.FontSize = width;
context.SetLineWidth(width);
context.SaveState();
context.Clip();

context.DrawLinearGradient(gradient,penVertices[0],penVertices[count-1],0);

context.StrokePath();
gradient.Dispose();
colorSpace.Dispose();
context.RestoreState();
4

1 回答 1

0

我假设 Mono 实现与原始 C 实现具有相同的要求。

CGGradientCreateWithColors(colorSpace, colors, locations[])(应该对应new CGGradient(colorSpace,colors,locations);于 Mono)的文档中,您可以阅读

数组应包含与locations数组相同数量的项目colors

但是,在您的代码中,您传递了两种颜色但有四个位置。

既然您说的是“在直线上平均分配”,您可能应该将两种颜色重复两次。

CGColor[] colors = {UIColor.Red.CGColor, UIColor.Red.CGColor, UIColor.Green.CGColor ,UIColor.Green.CGColor};
float[] locations = {0.0f,0.5f,0.5f,1.0f};
于 2013-04-16T10:07:40.597 回答