1

drawInRect を使用すると一貫性のない結果が得られます

画像が正しく描画されることもあれば、画像が 0.5 ピクセルずれているように見えることもあります。

ここに画像の説明を入力

左上では、スライダーのキャップ イメージが通常どおりに描画され、同じ x、y で描画されているにもかかわらず、塗りつぶしのエッジがぼやけていることがわかります。

// top cap
[topCap drawInRect:NSMakeRect(5, 5, 11, 7)
          fromRect:NSZeroRect
         operation:NSCompositeSourceOver
          fraction:1];

// background fill
[topFill drawInRect:NSMakeRect(5, 12, 11, (CGRectGetHeight(aRect) - 23))
           fromRect:NSZeroRect
          operation:NSCompositeSourceOver
           fraction:1];

左下の矢印、同じ状況。

中央の右矢印、同様の状況。左キャップの画像が正しくレンダリングされ、背景の塗りつぶし (幅 1 ピクセルの画像) がすべてぼやけていることがわかります。

四角形を塗りつぶそうとしている画像のレンダリングがうまくいかないように見えるので、画像の引き伸ばしと関係があるのではないかと思っています。

洞察をありがとう。

4

1 に答える 1

0

drawInRect が画像を歪める理由がわかっている場合は、回答を残してください。これを回避するために私が見つけた方法は次のとおりです。

私が使用したいくつかの領域についてcolorWithPatternImage

NSColor* backgroundFill = [NSColor colorWithPatternImage:backgroundImage];
[backgroundFill set];
NSRectFill(background);

これで私が遭遇した問題は、パターンの原点がビューではなくウィンドウに設定されているため、パターンがずれることがあるということです。

私が使用したいくつかの領域ではNSDrawThreePartImage、画像を歪ませることなく正しくタイル化しました。画像が3枚ないときも同じ画像を3回入れただけです。

于 2012-11-28T08:34:55.467 に答える