Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSImage在绘制到宽度大于2000px的NSRect时平铺_Objective C_Cocoa_Nsimage - Fatal编程技术网

Objective c NSImage在绘制到宽度大于2000px的NSRect时平铺

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

我试图在NSOpenGLView上覆盖一个图像。除非视图被拉伸到超过2000px的宽度,否则一切都可以正常工作。下面是我如何将其应用于NSOpenGLView的。简单地说,我实际上是在插入另一个应用程序,所以这个函数有点像黑客

- (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时的结果。另外,请注意,右侧的最后一个平铺被拉伸以适合图幅。

这是一个错误还是我做错了什么?我尝试过不同大小的不同图像,效果似乎是一样的