gpt4 book ai didi

Cocoa:使用 NSGradient 作为在其下方绘图的 mask

转载 作者:行者123 更新时间:2023-12-03 16:11:46 25 4
gpt4 key购买 nike

我正在尝试使用 Cocoa 绘制形状的反射。我已经应用了 NSAffineTransform 并成功重新绘制了形状,但现在我不知道如何在其上绘制 alpha 蒙版。我正在使用 NSCompositeDestinationOut 操作,但它给了我一个不需要的结果:alt text http://img687.imageshack.us/img687/2417/capturedcran20100623094.png

我不太确定如何解决这个问题 - 我需要将其设置为,以便渐变仅充当 Alpha mask ,而不实际显示。我使用了错误的合成模式吗?

谢谢!如果需要的话,这是渐变代码:

- (void)fadeOutRect:(NSRect)rect {
[NSGraphicsContext saveGraphicsState];
[[NSGraphicsContext currentContext] setCompositingOperation:NSCompositeDestinationOut];

NSGradient *gradient = [[NSGradient alloc] initWithColorsAndLocations:
[[NSColor blackColor] colorWithAlphaComponent:0.5], 0.0,
[[NSColor blackColor] colorWithAlphaComponent:1.0], 0.8, nil];
[gradient drawInRect:NSMakeRect(rect.origin.x, rect.origin.y + rect.size.height - ( PILL_HEIGHT * 2 ),
rect.size.width, PILL_HEIGHT) angle:270];

[NSGraphicsContext restoreGraphicsState];
}

最佳答案

是的。这是我们用来执行此操作的代码示例。它使用源图像,并且在比例因子方面有一些有趣的业务,但是您应该能够使用基本结构和合成选择来完成您需要的操作。 (此代码位于 [reflectionImage lockFocus] block 内,self 是我们要对其进行反射的 NSImage。)

// Draw our mask into the image
NSGradient* fade = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithCalibratedWhite:1.0 alpha:0.5]
endingColor:[NSColor clearColor]];
[fade drawFromPoint:NSMakePoint(0.0, size.height)
toPoint:NSMakePoint(0.0, 0.0)
options:0];

// Composite the original image, upside-down
NSAffineTransform* flipper = [NSAffineTransform transform];
[flipper scaleXBy:1.0 yBy:-1.0];
[flipper concat];
[self drawInRect:NSMakeRect(0.0, -1.0*size.height, size.width, size.height)
fromRect:NSMakeRect(0.0, 0.0, self.size.width, size.height / scaleFactor)
operation:NSCompositeSourceIn fraction:1.0];

关于Cocoa:使用 NSGradient 作为在其下方绘图的 mask ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3103699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com