0

AbstractUIPlugin.getImageDescriptor画像を使用して画像を呼び出し、画像を画像レジストリに配置することと、画像レジストリから呼び出すことの違いは何ですか?

両方が同じ仕事をしているようです。最初のものは簡単です(コードの行が少なくなります!)。

このコード:

ImageDescriptor id = Activator.getImageDescriptor("image/image.png");
Image image = id.createImage();

vs

最初にイメージレジストリに入れます。

protected void initializeImageRegistry(ImageRegistry registry) {
    super.initializeImageRegistry(registry);
    Bundle bundle = Platform.getBundle(ID);

    ImageDescriptor myImage = ImageDescriptor.createFromURL(
          FileLocator.find(bundle,
                           new Path("image/image.png"),
                                    null));
    registry.put(MY_IMAGE_ID, myImage);
}

次に、イメージレジストリからイメージを呼び出します。

AbstractUIPlugin plugin = Activator.getDefault();
ImageRegistry imageRegistry = plugin.getImageRegistry();
Image myImage = imageRegistry.get(Activator.MY_IMAGE_ID);
4

1 に答える 1

0

呼び出すたびに個別の画像が作成されます。最後に、「ハンドルがありません」という例外が発生します。:)

 ImageDescriptor id = Activator.getImageDescriptor("image/image.png");
    Image image = id.createImage();

アプリを閉じるときは、常に画像をキャッシュし、再利用して破棄してください。あなたが使用する場合ImageRegistry、あなたのためAbstractUIPluginにそれを処分する仕事をします。

于 2012-09-26T04:48:08.567 に答える