我正在使用“DrawLinearGradient”函数绘制渐变线。 但是我使用的两种颜色并不是一致的

我正在使用“DrawLinearGradient”函数绘制渐变线。 但是我使用的两种颜色并不是一致的。

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(); 

我假设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};