gpt4 book ai didi

cocoa - NSImage 透明度

转载 作者:行者123 更新时间:2023-12-03 17:00:12 30 4
gpt4 key购买 nike

我正在尝试设置一个自定义拖动图标以在 NSTableView 中使用。一切似乎都正常,但由于我对 Quartz 缺乏经验,我遇到了问题。

- (NSImage *)dragImageForRowsWithIndexes:(NSIndexSet *)dragRows tableColumns:(NSArray *)tableColumns event:(NSEvent *)dragEvent offset:(NSPointPointer)dragImageOffset
{
NSImage *dragImage = [NSImage imageNamed:@"icon.png"];
NSString *count = [NSString stringWithFormat:@"%d", [dragRows count]];

[dragImage lockFocus];
[dragImage compositeToPoint:NSZeroPoint fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:0.5];
[count drawAtPoint:NSZeroPoint withAttributes:nil];

[dragImage unlockFocus];
return dragImage;
}

本质上,我想要做的是以 50% 不透明度渲染 icon.png 文件以及显示当前拖动的行数的 NSString。我看到的问题是我的 NSString 以低不透明度渲染,但我的图标不是。

最佳答案

问题在于您正在将图标绘制在自身之上。您可能想要的是这样的:

- (NSImage *)dragImageForRowsWithIndexes:(NSIndexSet *)dragRows tableColumns:(NSArray *)tableColumns event:(NSEvent *)dragEvent offset:(NSPointPointer)dragImageOffset
{
NSImage *icon = [NSImage imageNamed:@"icon.png"];
NSString *count = [NSString stringWithFormat:@"%lu", [dragRows count]];

NSImage *dragImage = [[[NSImage alloc] initWithSize:[icon size]] autorelease];

[dragImage lockFocus];
[icon drawAtPoint:NSZeroPoint fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:0.5];
[count drawAtPoint:NSZeroPoint withAttributes:nil];

[dragImage unlockFocus];
return dragImage;
}

关于cocoa - NSImage 透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2866532/

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