gpt4 book ai didi

macos - NSImage 在拖动操作之间为 'retained'

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

嗨,我已经实现了:

- (NSImage *)dragImageForRowsWithIndexes:(NSIndexSet *)dragRows tableColumns:(NSArray *)tableColumns event:(NSEvent *)dragEvent offset:(NSPointPointer)dragImageOffset
{
NSImage *dragImage = [NSImage imageNamed:@"Drag-Icon.png"];
NSInteger numberOfItems = dragRows.count;
NSAttributedString *numbers = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%lu",numberOfItems] attributes:attributes];
[dragImage lockFocus];
NSRect numbersSurroundRect = NSMakeRect(dragImage.size.width - (numbers.size.width + 15) - strokeWidth - 5, strokeWidth, numbers.size.width + 15, boxHeight);
NSBezierPath *circle = [NSBezierPath bezierPathWithRoundedRect:numbersSurroundRect xRadius:9.0 yRadius:9.0];
[[NSColor redColor] set];
[circle fill];
[[NSColor whiteColor] set];
[circle setLineWidth:strokeWidth];
[circle stroke];
numbersSurroundRect.origin.y += ((numbersSurroundRect.size.height - numbers.size.height) + 1.75);
[numbers drawInRect:numbersSurroundRect];
[dragImage unlockFocus];
return dragImage;
}

在我的 NSTableView 子类中,当我在表格中拖动多行时,我得到:

enter image description here

然后,当我只拖动一两行时,我得到:

enter image description here

似乎返回了旧的行计数,然后在其之上绘制了新的计数......

有人可以解释一下吗?这是在我的项目中使用 ARC 的结果吗?

最佳答案

您正在直接在原始图像上绘图。您应该在绘制之前先制作一个副本,以便下次可以在新副本上绘制。

关于macos - NSImage 在拖动操作之间为 'retained',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14278207/

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