Первая программа Quartz 2D, выдающая ошибки ... В чем ошибка? - PullRequest
0 голосов
/ 13 марта 2011

Я пытаюсь сделать свое первое приложение Quartz 2D для MAC.У меня просто есть мой делегат приложения и класс myView, как показано ниже -

mydrawAppDelegate.h -

#import <Cocoa/Cocoa.h>

@class myView;

@interface mydrawAppDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;

myView* view;
}

@property (assign) IBOutlet NSWindow *window;

@end

mydrawAppDelegate.m -

#import "mydrawAppDelegate.h"
#import "myView.h"

@implementation mydrawAppDelegate

@synthesize window;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application 

view = [[myView alloc] initWithFrame:CGRectMake(0.0, 0.0, 300.0, 480.0) ];
[[self.window contentView] addSubview:view];
}   
@end

myView.h -

#import <Cocoa/Cocoa.h>
#import <Quartz/Quartz.h>
#import <AppKit/AppKit.h>

@interface myView : NSView {

}

@end

myView.m -

#import "myView.h"

@implementation myView

- (id)initWithFrame:(NSRect)frame {
self = [super initWithFrame:frame];
if (self) {
    // Initialization code here.

    NSLog(@"initwithframeeeeeee");
}
return self;
}

- (void)drawRect:(NSRect)dirtyRect {
  // Drawing code here.
NSLog(@"drawrect called");
CGContextRef context = [[NSGraphicsContext currentContext] graphicsPort];

CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [NSColor redColor]);
CGContextMoveToPoint(context, 100.0f, 100.0f);
CGContextAddLineToPoint(context, 300.0f, 300.0f);
CGContextStrokePath(context);
}

@end

Он строит, но выдает "EXC_BAD_ACCESS" во время работы.И предупреждение времени компиляции: «Передача аргумента 2 'CGContextSetStrokeColorWithColor' из несовместимого типа указателя"

Также я не использую ни один файл пера.Используем ли мы файл пера, когда рисуем кварцем или нет?Пожалуйста, помогите.Спасибо ...

1 Ответ

0 голосов
/ 14 марта 2011

Есть проблема. NSColor не может быть напрямую преобразован в CGColor. прокомментировал строку

     CGContextSetStrokeColorWithColor(context, [NSColor redColor]);

и работает нормально. Далее изменил цвет на красный, используя cgcreatecolor. :)

...