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 NSView背景图像由3个不同的文件组成_Objective C_Cocoa_Image_Nsview - Fatal编程技术网

Objective c NSView背景图像由3个不同的文件组成

Objective c NSView背景图像由3个不同的文件组成,objective-c,cocoa,image,nsview,Objective C,Cocoa,Image,Nsview,我正在尝试设置NSView的背景图像。(实际上是一个NSScrollView。)目前,我正在子类化drawRect:并使用NSDrawThreePartImage来绘制图像,但每当我开始滚动时,有一些事情是不正确的 有没有更好的方法来绘制图像 - (void)drawRect: (NSRect)dirtyRect { dirtyRect.size.height -= 18; //Moving the image up a bit for future subclassing of NS

我正在尝试设置NSView的背景图像。(实际上是一个NSScrollView。)目前,我正在子类化drawRect:并使用
NSDrawThreePartImage
来绘制图像,但每当我开始滚动时,有一些事情是不正确的

有没有更好的方法来绘制图像

- (void)drawRect: (NSRect)dirtyRect
{
    dirtyRect.size.height -= 18; //Moving the image up a bit for future subclassing of NSScroller.
    NSDrawThreePartImage(dirtyRect, viewLeftCap, viewFill, viewRightCap, NO, NSCompositeSourceOver, 1, YES);
}

如果要重画整个视图,应该使用[self bounds],而不是传递到-drawRect:方法中的rect。

NSDrawThreePartImage
通常是首选方法。您可能应该发布您的
drawRect:
implementation.Added。不过不多。是的,就是这样!万分感谢!具体地说,Jane,
dirtyRect
就是:脏的矩形。“脏”是指需要更新;在这种情况下,需要重新绘制。您需要重新绘制视图边界的部分。你可以多画,但不能少画。(出于性能原因,不鼓励绘制比脏矩形更多的内容,但在其他方面它是无害的,有时是不可避免的。我建议在没有其他方法不在脏矩形之外绘制时(如本例中)剪切到脏矩形。)感谢对此的深入了解。