ImageView

English

ImageViewは、UIngのImageをOS標準の画像ビューへ表示します。UIngは生の画素を受け取り、画像デコーダーには依存しません。画像・色の便利メソッドを使う場合は、アプリケーションのshard.ymlにCrImageを追加します。

dependencies:
  uing:
    github: kojix2/uing
  crimage:
    github: naqvis/crimage
require "uing/crimage"

source = CrImage.read("photo.png")
view = UIng::ImageView.new(source, :fit)
view.image = CrImage.read("next.png")

# Area、Table、Toolbarで使う画像は、利用が終わるまで保持します。
image = UIng::Image.from_crimage(source)
# ... image を使用 ...
image.free

実行例

require "uing/crimage"

fname = File.join(__DIR__, "../gallery/crys.png")
source = CrImage.read(fname)

UIng.init

window = UIng::Window.new("ImageView Example", 300, 200, margined: true)
window.on_closing do
  UIng.quit
  true
end

vbox = UIng::Box.new(:vertical)

image_view = UIng::ImageView.new(source, :fit)

label = UIng::Label.new(fname)

vbox.append(image_view, stretchy: true)
vbox.append(label)

window.child = vbox
window.show

UIng.main
UIng.uninit

使い方

  • ContentMode::Fitはビューに収まるよう画像を拡大縮小し、ContentMode::Centerは画像を本来のサイズで中央に表示します。
  • image=で別のImageを設定できます。nilを代入すると表示を消去します。
  • ImageViewはネイティブ画像を内部でコピーまたは保持します。そのため、構築または代入の直後に元のImageを解放できます。
  • require "uing"だけならCrImageは不要です。require "uing/crimage"で便利メソッドが追加され、アプリ側のCrImage依存が必要になります。
  • UIng::Image.from_file(path)はファイル内容から形式を判定します。現在のCrImageのCrImage.read(path)は拡張子で形式を選びます。
  • UIng::Image.from_crimage、CrImage::Image#to_uing_image、UIng::Image#append(CrImage::Image)は各種CrImage画像を受け取り、premultiplied RGBAへ変換します。原点が0でない画像やサブ画像にも対応します。
  • ImageViewは設定時に作る一時的なUIng画像を解放します。from_crimage、from_file、to_uing_imageが返す画像は、利用先の使用が終わった後に呼び出し側が解放してください。
  • 同じ拡張でColorButton#set_color、単色Brush、グラデーション停止点、文字属性、Tableの色値へCrImageの色を渡せます。半透明のUI色にはCrImage::Color::NRGBAを使います。現在のCrImageのColor.parseは半透明RGBAを正しくpremultiplyしません。

ImageView API · Image API · Galleryソース