Нарисуйте линию непрозрачности в Xcode для Titanium - PullRequest
3 голосов
/ 19 апреля 2011

Я новичок в xCode и у меня проблема с ним.Я делаю заявку на мой Ipad.Я хочу выделить текст, но не могу установить непрозрачность моей линии.Я искал в Интернете, но я не нашел никакой информации об этом. Теперь я использую этот drawImage.alpha = lineOpacity;но это нехорошо, все, что я рисую раньше, получает эту непрозрачность. Я просто хочу, чтобы альфа была сделана на новом розыгрыше.Я сейчас использую этот код:

   //here I init the opacity
     -(id)init
    {
        if (self = [super init])
        {
            strokeWidth = 5;
            strokeColor = CGColorRetain([[TiUtils colorValue:@"#000"] _color].CGColor);
            lineOpacity = 1;
        }
        return self;
    }
    - (void)dealloc
{
    RELEASE_TO_NIL(drawImage);
    CGColorRelease(strokeColor);
    [super dealloc];
}

- (void)frameSizeChanged:(CGRect)frame bounds:(CGRect)bounds
{
    [super frameSizeChanged:frame bounds:bounds];
    if (drawImage!=nil)
    {
        [drawImage setFrame:bounds];
    }
}

    //here I add a call
    - (void)setLineOpacity_:(id)alpha
    {
        lineOpacity = [TiUtils floatValue:alpha];
    }

    //here I want to set the opacity
    - (void)drawAt:(CGPoint)currentPoint
    {
        UIView *view = [self imageView];
        UIGraphicsBeginImageContext(view.frame.size);
        [drawImage.image drawInRect:CGRectMake(0, 0, view.frame.size.width, view.frame.size.height)];
        CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
        CGContextSetLineWidth(UIGraphicsGetCurrentContext(), strokeWidth);
        CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), strokeColor);
        CGContextBeginPath(UIGraphicsGetCurrentContext());
        CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
        CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
        CGContextStrokePath(UIGraphicsGetCurrentContext());
        //here i want to set the alpha, but everything I draw before get also the new alpha.
        //I just want the alpha to be done on the new draw
        drawImage.alpha = lineOpacity;
        drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        lastPoint = currentPoint;
    }

Я надеюсь, что кто-то может мне помочь.Заранее спасибо.

Редактировать: Я использую это для рисования:

- (UIImageView*)imageView
{
    if (drawImage==nil)
    {   
        drawImage = [[UIImageView alloc] initWithImage:nil];
        drawImage.frame = [self bounds];
        [self addSubview:drawImage];
    }
    return drawImage;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
    [super touchesBegan:touches withEvent:event];

    UITouch *touch = [touches anyObject];
    lastPoint = [touch locationInView:[self imageView]];
    lastPoint.y -= 20;
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{
    [super touchesMoved:touches withEvent:event];

    UITouch *touch = [touches anyObject];   
    CGPoint currentPoint = [touch locationInView:[self imageView]];
    currentPoint.y -= 20;
    [self drawAt:currentPoint];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{
    [super touchesEnded:touches withEvent:event];
    [self drawAt:lastPoint];
}

#pragma mark Public APIs

- (void)setStrokeWidth_:(id)width
{
    strokeWidth = [TiUtils floatValue:width];
}

- (void)setStrokeColor_:(id)value
{
    CGColorRelease(strokeColor);
    TiColor *color = [TiUtils colorValue:value];
    strokeColor = [color _color].CGColor;
    CGColorRetain(strokeColor);
}

- (void)setLineOpacity_:(id)alpha
{
    lineOpacity = [TiUtils floatValue:alpha];
}

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

Ответы [ 2 ]

2 голосов
/ 19 апреля 2011

Вы можете сделать UIColor и получить из него CGColorRef следующим образом:

strokeColor = CGColorRetain([UIColor colorWithRed:1.0f green:1.0f blue:0.0f alpha:0.5f].CGColor);
0 голосов
/ 19 апреля 2011

Непрозрачность задается альфа-значением цвета обводки (в данном примере 0,5):

strokeColor = CGColorCreateGenericRGB(1.0f, 1.0f, 0.0f, 0.5f);
...