一、把要用到的圖片放在org.eclipse.myTest.shapes.diagram工程下的icons/custom文件夾下,我用的是ReserveShapeFigure.jpg,而後刷新這個工程。java
二、我想要設置圖片的元素是ReserveShape1,打開ReserveShape1EditPart.java,它在該工程的org.eclipse.myTest.shapes.diagram.edit.parts包下。eclipse
三、爲ReserveShape1EditPart類添加靜態成員變量,代碼以下:this
/** * @generated NOT */ private static final ImageDescriptor descriptor = ShapesDiagramEditorPlugin .findImageDescriptor("icons/custom/ReserveShapeFigure.jpg"); private static final Image originalImage = descriptor.createImage(); public static final ImageData OrgImageData = originalImage.getImageData();
四、在ReserveShape1EditPart.java中找到類ReserveShape1Figure定義部分,也就是public class ReserveShape1Figure extends RectangleFigure {……},在類ReserveShape1Figure中覆蓋paintFigure(Graphics graphics)方法:spa
/** * @generated NOT */ public void paintFigure(Graphics graphics) { super.paintFigure(graphics); // 設置結點漸變顏色 // graphics.setForegroundColor(ColorConstants.blue); // graphics.setBackgroundColor(ColorConstants.yellow); // graphics.fillGradient(bounds, true); // 設置結點圖片,而且使得圖片的大小總與圖形一致 Dimension size = this.getSize(); ImageData data = OrgImageData.scaledTo(size.width, size.height); Image image = new Image(Display.getCurrent(), data); graphics.drawImage(image, getLocation()); }
五、運行效果以下圖:.net
並且,能夠知足圖片的大小隨着圖形的改變而改變。code
程序代碼請見個人代碼分享http://www.oschina.net/code/snippet_164134_5913。圖片