我正在尝试为MAC制作我的第一个Quartz 2D应用程序。我只有我的app委托和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”。编译时警告:“从不兼容的指针类型传递'CGContextSetStrokeColorWithColor'的参数2”
此外,我没有使用任何nib文件。当我们使用石英绘制时是否使用nib文件? 请帮助。谢谢......
答案 0 :(得分:0)
遇到了问题。 NSColor无法直接转换为CGColor。评论了这一行
CGContextSetStrokeColorWithColor(context, [NSColor redColor]);
它工作正常。使用cgcreatecolor进一步将颜色更改为红色。 :)