programlı ObjectiveC ve kakao renkli bir kabarcık / çevre oluştur

oy
14

Herkes program renkli bir kabarcık / daire inşa etmek doğru şekilde bana yol gösterebilir?

Ben kullanıcı etkileşimine bağlı olarak herhangi bir renk olmak gerekiyor gibi ben görüntüleri kullanamazsınız.

Benim düşünce beyaz daire resmine yapıp sonra bunun üstüne bir renk bindirmek için belki oldu. Bu işe yarar Ancak emin değilim, ya da ne kadar gerçekten bu konuda gitmek için.

Birisi bana doğru yönde işaret olsaydı bunu takdir ediyorum.

Oluştur 10/12/2008 saat 00:28
kaynak kullanıcı
Diğer dillerde...                            


5 cevaplar

oy
31

Kakao şey çizim için birkaç adım vardır.

Öncelikle çizim olacak nesneyi tanımlamak için kullanılacak bir yol gerekir. Burada bir göz atın Temel Şekiller Çizim Cocoa yolları oluşturma hakkında bir kılavuz için. Bir "NSBezierPath" nesnesine "appendBezierPathWithOvalInRect" mesajı göndererek en çok ilgi olacak, bu çizmek istediğiniz daireyi sınırlayan bir dikdörtgen sürer.

10,10 koordinatlarında Bu kod, bir 10x10 daire oluşturur:

NSRect rect = NSMakeRect(10, 10, 10, 10);
NSBezierPath* circlePath = [NSBezierPath bezierPath];
[circlePath appendBezierPathWithOvalInRect: rect];

Eğer yolu sahip olduktan sonra geçerli çizim metni rengini ayarlamak istiyorum. İki renk, kontur ve dolgu vardır; inme yolunun anahat ve dolgu iç renktir. Bir "NSColor" nesnesine "set" göndermek bir renk belirleyin.

Bu siyah inme ve kırmızı dolguyu ayarlar:

[[NSColor blackColor] setStroke];
[[NSColor redColor] setFill];

Artık yolu varsa ve renkleri sadece çizmek ardından yolu doldurup ayarlayın sahip olduğunu:

[path stroke];
[path fill];

Bütün bunlar belki de bakış drawRect gibi bir grafik bağlamında yapılması gerekecektir. Birlikte bir grafik bağlamıyla Tüm bu şuna benzer:

- (void)drawRect:(NSRect)rect
{
    // Get the graphics context that we are currently executing under
    NSGraphicsContext* gc = [NSGraphicsContext currentContext];

    // Save the current graphics context settings
    [gc saveGraphicsState];

    // Set the color in the current graphics context for future draw operations
    [[NSColor blackColor] setStroke];
    [[NSColor redColor] setFill];

    // Create our circle path
    NSRect rect = NSMakeRect(10, 10, 10, 10);
    NSBezierPath* circlePath = [NSBezierPath bezierPath];
    [circlePath appendBezierPathWithOvalInRect: rect];

    // Outline and fill the path
    [circlePath stroke];
    [circlePath fill];

    // Restore the context to what it was before we messed with it
    [gc restoreGraphicsState];
}
Cevap 10/12/2008 saat 01:02
kaynak kullanıcı

oy
12

Basit kullanabilir UIViewoluşturmak için mükemmel tek parametre ile daireyi radius:

// Add framework CoreGraphics.framework
#import <QuartzCore/QuartzCore.h>

-(UIView *)circleWithColor:(UIColor *)color radius:(int)radius {
    UIView *circle = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 2 * radius, 2 * radius)];
    circle.backgroundColor = color;
    circle.layer.cornerRadius = radius;
    circle.layer.masksToBounds = YES;
    return circle;
}
Cevap 09/12/2012 saat 09:42
kaynak kullanıcı

oy
11

Bir Ivar gibi bir NSColor tutan bir NSView alt sınıfını oluşturun. DrawRect yöntemde, görünümün sınırları kullanılarak, uygun büyüklükte bir NSBezierPath oluşturun. Sonra rengini ayarlamak [myColor set]ve yolu doldurun [myPath fill]. Orada çok daha fazla bu tür set şeffaflık, bir sınır olarak, yapabileceği, ve benzeri ve benzeri, ancak belirli bir sorum var sürece dokümanlara o bırakacağım.

NSView alt sınıfı kullanmak için, sadece uç üzerine bir görünüm nesnesi sürükleyin ve IB'nin denetçisi özel sınıfta alt sınıf adını seçin. gerektiği gibi rengini değiştirebilir, böylece de denetleyicisi kendisine bir çıkış ayarlamak gerekir.

Cevap 10/12/2008 saat 00:40
kaynak kullanıcı

oy
7
    CGContextRef c = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(c, 40, 0, 255, 0.1);
    CGContextSetRGBStrokeColor(c, 0, 40, 255, 0.5);

   // Draw a green solid circle
    CGContextSetRGBFillColor(c, 0, 255, 0, 1);
    CGContextFillEllipseInRect(c, CGRectMake(100, 100, 25, 25));
Cevap 11/10/2011 saat 12:09
kaynak kullanıcı

oy
2

Elma dan krokisini indirin. http://developer.apple.com/library/mac/#samplecode/Sketch

Bu çok daha fazla yapabilirsiniz ancak şeylerden biri daireler çizilir olduğunu.

Cevap 10/12/2008 saat 00:46
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more