gpt4 book ai didi

objective-c - CGContextAddEllipseInRect 不绘制任何东西

转载 作者:太空狗 更新时间:2023-10-30 03:33:11 25 4
gpt4 key购买 nike

我想画一个里面有数字的圆圈:

   -(void)drawRect:(CGRect)rect {
//Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 4.0);
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextBeginPath(context);
CGContextAddEllipseInRect(context, rect);
CGContextDrawPath(context, kCGPathFillStroke);

// Label and index code
UILabel* circleLabel = [[UILabel alloc] init];
NSString *i=[Index stringValue];
[circleLabel setText:i];
[self addSubview:circleLabel];




}

我从我自己的方法中调用 drawRect 方法:

-(void)addPhotoIndex:(NSNumber*)tempNumber withCoordinate:(NSString*)currentTouchPos{
self.coord= CGPointFromString(currentTouchPos);
CGRect rect= CGRectMake ((coord.x - 5), (coord.y- 5), 5, 5);
NSNumber *Index= tempNumber;
[self drawRect:rect];




}

它本身是从 ViewController 调用的。

但这并不是什么都没有画,也不是给出任何错误。有人可以帮帮我吗?

解决方案:

最后,这是它的工作原理:

  -(void)addPhotoIndex:(NSNumber*)tempNumber withCoordinate:(NSString*)currentTouchPos{

self.coord= CGPointFromString(currentTouchPos);
CGRect rect= CGRectMake ((coord.x - 3), (coord.y- 3), 3, 3);
NSNumber *Index= tempNumber;
NSString *i=[Index stringValue];
UIFont *font = [UIFont systemFontOfSize:15.0];

// Drawing Point
UIGraphicsBeginImageContext(self.frame.size);
[self.image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 3.0);
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextBeginPath(context);
CGContextAddEllipseInRect(context, rect);
CGContextDrawPath(context, kCGPathFillStroke);
[ i drawAtPoint:self.coord withFont:font];
self.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();


}

带有索引号的点在正确的位置并排绘制:)感谢您的帮助!

最佳答案

您应该使用的方法是 drawRect: 而不是 drawInRect:

您也不需要创建自己的上下文,因为这是在 drawRect:

中为您设置的
- (void)drawRect:(CGRect)rect;
{
// UIGraphicsBeginImageContext(self.bounds.size); <-- not needed
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 4.0);
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextBeginPath(context);
CGContextAddEllipseInRect(context, rect);
CGContextDrawPath(context, kCGPathFillStroke); // Or kCGPathFill

/*
* As @Jonathan Cichon points out you should not add subview's here
* either add them elsewhere or draw the string manually
*/
// UILabel* circleLabel = [[UILabel alloc] init];
// NSString *i=[Index stringValue];
// [circleLabel setText:i];
// [self addSubview:circleLabel];
// UIGraphicsEndImageContext(); <-- not needed
}

关于objective-c - CGContextAddEllipseInRect 不绘制任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13232608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com