3

NSImagecolorWithPatternImageメソッドは、画像を下から並べて表示します。代わりに上から並べて表示できますか?

+ (NSColor *)colorWithPatternImage:(NSImage *)image Parameters image

カラーオブジェクトのパターンとして使用する画像。画像はウィンドウの下部から並べて表示されます。画像は拡大縮小されていません。

これは、アプリのNSScrollView内のビューであるIKImageBrowserViewのサブクラスのコードです。

- (void)drawRect:(NSRect)rect
{
    NSImage * backgroundImage = [NSImage imageNamed:@"deliciousLibrary.png"];
    [backgroundImage setSize:NSMakeSize(459 * bgImageSize, 91 * bgImageSize)];
    [[NSColor colorWithPatternImage:backgroundImage] set];
    NSRectFill(rect);
    [super drawRect:rect];
}

ありがとう

更新:私はインターネット上でこの解決策を見つけました。しかし、私の場合、NSScrollViewで画像がスクロールしなくなったため、機能しません。

- (void)drawRect:(NSRect)dirtyRect {
    NSGraphicsContext* theContext = [NSGraphicsContext currentContext];
    [theContext saveGraphicsState];
    [[NSGraphicsContext currentContext] setPatternPhase:NSMakePoint(0,[self frame].size.height)];
    [self.customBackgroundColour set];
    NSRectFill([self bounds]);
    [theContext restoreGraphicsState]; 
}
4

2 に答える 2

4

これが私の問題の解決策です。驚くほどシンプル。

float yOffset = NSMaxY([self convertRect:[self frame] toView:nil]);
[[NSGraphicsContext currentContext] setPatternPhase:NSMakePoint(0,yOffset)];
于 2013-02-15T11:00:54.930 に答える