gpt4 book ai didi

objective-c - NSMenuitem 模板图像色调颜色不改变

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

我有一个自定义 View ,其中包含 ImageView 图像,我将 NSImageNameMenuOnStateTemplate 设置为具有色调颜色的 imageview,但色调颜色未应用

NSImage *tintImage = [self tintedImage:[NSImage imageNamed:NSImageNameMenuOnStateTemplate] withTintColor:NSColor.whiteColor];

myimageView.image = tintImage
-(NSImage*)tintedImage:(NSImage*)image withTintColor:(NSColor*)color{
NSImage *tinted = [image copy];
[tinted lockFocus];
[color set];

NSRect imageRect = {NSZeroPoint, [image size]};
NSRectFillUsingOperation(imageRect, NSCompositingOperationSourceAtop);
[image unlockFocus];
return tinted;
}

非常感谢任何帮助..

最佳答案

你真的应该避免使用lockFocus/unlockFocus。它们已被弃用,并且您通过锁定一张图像并解锁另一张图像来滥用它们。使用 `+[NSImage imageWithSize:flipped:drawingHandler:]

作为 NSImage 的类别补充:

- (NSImage *)imageWithSolidFillColor:(NSColor *)color
{
return [NSImage imageWithSize:self.size flipped:false drawingHandler:^BOOL(NSRect dstRect) {
[self drawInRect:dstRect fromRect:NSZeroRect operation:NSCompositingOperationSourceOver fraction:1.0];
[color set];
NSRectFillUsingOperation(dstRect, NSCompositeSourceAtop);
return YES;
}];
}

关于objective-c - NSMenuitem 模板图像色调颜色不改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55720907/

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