- (voID)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context UIcolor *darker = [UIcolor blackcolor]; CGfloat baseWIDth = self.linewidth / zoomScale; // draw the dark colour thicker CGContextAddpath(context,self.path); CGContextSetstrokecolorWithcolor(context,darker.CGcolor); CGContextSetlinewidth(context,baseWIDth * 1.5); CGContextSetlineCap(context,self.lineCap); CGContextstrokePath(context); // Now draw the stroke color with the regular wIDth CGContextAddpath(context,self.strokecolor.CGcolor); CGContextSetlinewidth(context,baseWIDth); CGContextSetlineCap(context,self.lineCap); CGContextstrokePath(context); [super drawMapRect:mapRect zoomScale:zoomScale inContext:context];}
但即使这样也行不通(strokecolor =红色).任何想法如何获得渐变
折线? (高色,中心色,低色)
感谢大家.
解决方法 要使用渐变绘制MKpolyline,可以使用MKpolylineVIEw的自定义子类.由于CoreGraphics不支持使用渐变来描边,我们必须这样做>使用CGPathCreatecopyByStrokingPath将路径转换为跟踪路径边缘的形状
>将上下文剪辑到该形状
>使用CGContextDrawlinearGradIEnt填充
这是一个让你入门的子类:
@interface TWOGradIEntpolylineVIEw : MKpolylineVIEw@end@implementation TWOGradIEntpolylineVIEw- (voID)strokePath:(CGPathref)path inContext:(CGContextRef)context{ CGfloat linewidth = CGContextConvertSizetoUserSpace(context,(CGSize){self.linewidth,self.linewidth}).wIDth; CGPathref pathToFill = CGPathCreatecopyByStrokingPath(path,NulL,linewidth,self.lineCap,self.lineJoin,self.miterlimit); CGRect rect = CGPathGetBoundingBox(pathToFill); CGContextAddpath(context,pathToFill); CGPathRelease(pathToFill); CGContextClip(context); CGfloat gradIEntLocations[2] = {0.0f,1.0f}; CGfloat gradIEntcolors[8] = {1.0f,0.0f,0.75f,1.0f,0.75f}; CGcolorSpaceRef colorSpace = CGcolorSpaceCreateDeviceRGB(); CGGradIEntRef gradIEnt = CGGradIEntCreateWithcolorComponents(colorSpace,gradIEntcolors,gradIEntLocations,2); CGcolorSpaceRelease(colorSpace); CGPoint gradIEntStart = rect.origin; CGPoint gradIEntEnd = {CGRectGetMaxX(rect),CGRectGetMaxY(rect)}; CGContextDrawlinearGradIEnt(context,gradIEnt,gradIEntStart,gradIEntEnd,kCGGradIEntDrawsAfterEndLocation); CGGradIEntRelease(gradIEnt);}@end
以下是使用上述类绘制的路径的屏幕截图:
总结以上是内存溢出为你收集整理的ios – 在MKPolyLineView中绘制CAGradient全部内容,希望文章能够帮你解决ios – 在MKPolyLineView中绘制CAGradient所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)