Objective c NSImage在绘制到宽度大于2000px的NSRect时平铺
我试图在NSOpenGLView上覆盖一个图像。除非视图被拉伸到超过2000px的宽度,否则一切都可以正常工作。下面是我如何将其应用于NSOpenGLView的。简单地说,我实际上是在插入另一个应用程序,所以这个函数有点像黑客Objective c NSImage在绘制到宽度大于2000px的NSRect时平铺,objective-c,cocoa,nsimage,Objective C,Cocoa,Nsimage,我试图在NSOpenGLView上覆盖一个图像。除非视图被拉伸到超过2000px的宽度,否则一切都可以正常工作。下面是我如何将其应用于NSOpenGLView的。简单地说,我实际上是在插入另一个应用程序,所以这个函数有点像黑客 - (void)applyOverlay { NSWindow* mainWindow = [[NSApplication sharedApplication]mainWindow]; NSArray* subViews = [[mainWindow co
- (void)applyOverlay {
NSWindow* mainWindow = [[NSApplication sharedApplication]mainWindow];
NSArray* subViews = [[mainWindow contentView] subviews];
NSOpenGLView* openGLView = subViews[0];
Overlay* overlay = [[VRayOverlay alloc] initWithFrame:[openGLView frame]];
[openGLView setAutoresizesSubviews:YES];
[openGLView addSubview:overlay];
}
我的叠加类看起来像这样
@implementation Overlay
- (id)initWithFrame:(NSRect)rect
{
self = [super initWithFrame:rect];
if (self) {
self->image = [[NSImage alloc] initByReferencingFile:@"/my_path/scribbles.png"];
[self setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect
{
[super drawRect:dirtyRect];
[self->image drawInRect:dirtyRect fromRect:NSZeroRect operation:NSCompositeCopy fraction:0.5];
}
@end
这是宽度低于2000px时的结果
这就是当宽度超过2000px时的结果。另外,请注意,右侧的最后一个平铺被拉伸以适合图幅。
这是一个错误还是我做错了什么?我尝试过不同大小的不同图像,效果似乎是一样的