我试图创建一个标签装饰器,在我的文件图标的左上角添加一个图标。我看到小红色的X可以从图标的边缘拉出来,但是我的辐射符号在边缘被切掉了。
升
@Override
public Image decorateImage(Image image, Object element) {
Image failureImg = Activator.imageDescriptorFromPlugin(IMAGE PATH).createImage();
GC gc = new GC(image);
gc.drawImage(failureImg, 0, 0, failureImg.getImageData().width, failureImg.getImageData().height,
0, 0, 11, 11);
gc.dispose();
return image;
}
关于如何在文件图标的边界之外绘制的任何想法?
答案 0 :(得分:1)
使用轻量级标签装饰器(实现ILightweightLabelDecorator
并在扩展点中指定lightweight="true"
)会更容易。
然后,您可以使用以下内容添加装饰图像:
@Override
public void decorate(final Object element, final IDecoration decoration)
{
ImageDescriptor imageDescriptor = Activator.imageDescriptorFromPlugin(IMAGE PATH);
decoration.addOverlay(imageDescriptor, IDecoration.TOP_LEFT);
}
由于轻量级装饰器在后台线程中运行,因此它们也使UI更具响应性。
注意:您的代码正在创建Image
个对象,而不是安排它们被处置 - 这会泄漏资源句柄。轻量级装饰器没有这个问题。