开发者

Draw line opacity in Xcode for Titanium

开发者 https://www.devze.com 2023-02-26 06:31 出处:网络
I\'m new with xCode and I have a problem with it. I\'m making an application for my Ipad. I want to highlight text, but I can\'t set the opacity of my line. I searched the internet, but i didn\'t find

I'm new with xCode and I have a problem with it. I'm making an application for my Ipad. I want to highlight text, but I can't set the opacity of my line. I searched the internet, but i didn't find any information on it.Now Im using this drawImage.alpha = lineOpacity; but this is not good, everything I draw before gets that opacity.I just want the alpha to be done on the new draw. im using this code now:

   //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;
    }

I hope someone can help me. Thanks in advance.

Edit: I use this for drawing:

- (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开发者_如何学C(strokeColor);
}

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

I really want to find out way it wont work, searched a long time on it.


You can make a UIColor and get the CGColorRef from it like this:

strokeColor = CGColorRetain([UIColor colorWithRed:1.0f green:1.0f blue:0.0f alpha:0.5f].CGColor);


The opacity is set with the alpha value of the stroke color (0.5 in this example):

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

精彩评论

暂无评论...
验证码 换一张
取 消