рисование линий поверх UIImageView, в котором уже есть изображение - PullRequest
0 голосов
/ 24 сентября 2011

У меня есть черно-белое изображение в формате png, которое отображается с помощью UIImageView. Это форма часов без ручек. поэтому фон белый, а круг черный. Затем я бы хотел часами и минутами рисовать поверх ручек, и я борюсь за то, как это сделать, хотя я недалеко, я не могу заставить его работать ...

Когда я рисую ручки, я получаю большой черный квадрат (поэтому я не могу видеть сквозь него, чтобы увидеть мой png за ним) и, по крайней мере, я вижу свои 2 ручки (синим цветом, которые я хотел). Я предполагаю, что цель состоит в том, чтобы сделать этот большой черный квадрат белым / прозрачным, чтобы он работал ...

Мой код такой, как показано ниже:

- (void)drawRect:(CGRect)rect 
{
......

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0);    
[self drawLineForContext:context Width:10.0 angle:hAlpha length:self.frame.size.width/2.0 - 40];
[self drawLineForContext:context Width:5.0 angle:mAlpha length:self.frame.size.width/2.0 - 12];
}

Как вы думаете, что мне не хватает?

Для информации, чтобы установить изображение, я просто делаю это так, я думаю, это правильно, как это работает ...

UIImage *image = [UIImage imageNamed: [md objectForKey:Q_DIRECTION_PIC]];
[ivDirectionPic setImage: image];
ivDirectionPic.backgroundColor=[UIColor clearColor];
ivDirectionPic.contentMode = UIViewContentModeScaleAspectFit;

Спасибо за вашу помощь!

Ура, * 1015 ГБ *

EDIT1: я добавил UIColor clearColor, но он все тот же ... и я не понимаю ваш комментарий о том, как добавить другой подкласс с таким же фреймом: как, пожалуйста? где?

Я также добавил дополнительную функцию, которую вы попросили меня опубликовать:

- (void) drawLineForContext:(const CGContextRef)context Width:(float)_width angle:(double)_angle length:(double)radius
{
CGPoint c = CGPointMake(self.frame.size.width/2.0, self.frame.size.height/2.0);

CGContextSetLineWidth(context, _width);
CGContextMoveToPoint(context, self.center.x, self.center.y);
CGPoint addLines[] =
{
    CGPointMake(self.frame.size.width/2.0, self.frame.size.height/2.0),
    CGPointMake(radius*cos(_angle) +c.x, radius*sin(_angle) +c.y),
};

CGContextAddLines(context, addLines, sizeof(addLines)/sizeof(addLines[0]));
CGContextStrokePath(context);
}

1 Ответ

0 голосов
/ 24 сентября 2011

У вашего UIImageView должно быть backgroundColor, установленное на [UIColor clearColor].

Если это не работает, просто добавьте добавить еще один подкласс UIView с таким же кадром в верхней части вашего изображения.

Другим источником вашей ошибки могут быть ваши drawLineForContext методы, для которых вы не опубликовали никакого кода.

...