Animated GIFでのコマ描画時処理
Total: 12507
, Today: 1
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JLabel
などで使用できるAnimated GIF
ファイルをテストします。
Screenshot
Advertisement
サンプルコード
JLabel label1 = new JLabel(
"何もしない",
new ImageIcon(getClass().getResource("no_disposal_specified.gif")),
SwingConstants.LEFT);
JLabel label2 = new JLabel(
"そのまま残す",
new ImageIcon(getClass().getResource("do_not_dispose.gif")),
SwingConstants.LEFT);
JLabel label3 = new JLabel(
"背景色で塗りつぶす",
new ImageIcon(getClass().getResource("restore_to_background_color.gif")),
SwingConstants.LEFT);
JLabel label4 = new JLabel(
"直前の画像に戻す",
new ImageIcon(getClass().getResource("restore_to_previous.gif")),
SwingConstants.LEFT);
View in GitHub: Java, Kotlin解説
Animated GIF
で、次のコマを描画する時、直前の画像を異なる方法で消去するAnimated GIF
ファイルを作成し、これらをJLabel
に貼り付けてアニメーションをテストしています。上記のように透過色を使用する場合、Swing
では3
番目の「背景色で塗りつぶす」にしておかないと残像が出てしまうようです。
- 何もしない
No disposal specified. The decoder is not required to take any action.
- そのまま残す
Do not dispose. The graphic is to be left in place.
- 背景色で塗りつぶす
Restore to background color. The area used by the graphic must be restored to the background color.
- 直前の画像に戻す
Restore to previous. The decoder is required to restore the area overwritten by the graphic with what was there prior to rendering the graphic.
参考リンク
- Cover Sheet for the GIF89a Specification
23. Graphic Control Extension.
のiv) Disposal Method
から説明を引用