我正在使用“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};