GMF之Shapes實例Part3:爲結點Node設置圖片或顏色

一、把要用到的圖片放在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圖片

相關文章
相關標籤/搜索