Images in FXRuby

I’m new to FXRuby, and I’m having a problem with displaying images. I’m
simply trying to display an image in a vertical scroll window, with the
end result being a program that shows multiple images with vertical
scrolling. I can get button icons to work just fine. I have tried
using both FXImageView and FXImageFrame. What am I doing wrong? A
sample of my code is:

require ‘fox16’
include Fox
theApp = FXApp.new

imageFile = File.open(“gm.jpg”, “rb”)
theMainWindow = FXMainWindow.new(theApp, “Hello”, nil, nil, DECOR_ALL,
400, 400)
firstWindow = FXScrollArea.new(theMainWindow,
VSCROLLER_ALWAYS|LAYOUT_FILL_X|LAYOUT_FILL_Y)
image = FXJPGIcon.new(theApp, iconFile.read)
imageView = FXImageView.new(firstWindow, image)

theApp.create
theMainWindow.show
theApp.run

image = FXJPGIcon.new(theApp, iconFile.read)

That’s a typo. Should say FXJPGImage.new. But that’s not the problem,
just a cut and paste error.

On 1/16/07, Raj S. [email protected] wrote:

I’m new to FXRuby, and I’m having a problem with displaying images. I’m
simply trying to display an image in a vertical scroll window, with the
end result being a program that shows multiple images with vertical
scrolling. I can get button icons to work just fine. I have tried
using both FXImageView and FXImageFrame. What am I doing wrong? A
sample of my code is:

Right offhand, I’m not sure, but the problem may be that you’re
putting the FXImageView (which itself is a subclass of FXScrollArea)
inside an FXScrollArea. Try making the FXImageView a child of the main
window (i.e. eliminate the “firstWindow” scroll area in the middle.

Also compare against the imageviewer.rb example program that comes
with FXRuby to see what you might be doing differently.

Hope this helps,

Lyle

Lyle J. wrote:

Right offhand, I’m not sure, but the problem may be that you’re
putting the FXImageView (which itself is a subclass of FXScrollArea)
inside an FXScrollArea. Try making the FXImageView a child of the main
window (i.e. eliminate the “firstWindow” scroll area in the middle.

Also compare against the imageviewer.rb example program that comes
with FXRuby to see what you might be doing differently.

Hope this helps,

Lyle

Thanks for your help. Just in case anyone searches this in the future,
I’ll post my working code. The key was loading the image using
FXFileStream. Also, removing the scroll area produced the same results:

require ‘fox16’
include Fox

theApp = FXApp.new

theMainWindow = FXMainWindow.new(theApp, “Hello”, nil, nil, DECOR_ALL,
400, 400)
imagebox = FXVerticalFrame.new(theMainWindow,
FRAME_SUNKEN|FRAME_THICK|LAYOUT_FILL_X|LAYOUT_FILL_Y)
imageView = FXImageView.new(imagebox, nil, nil, 0,
VSCROLLER_ALWAYS|LAYOUT_FILL_X|LAYOUT_FILL_Y)
image = FXJPGImage.new(theApp, nil)
FXFileStream.open(“gm.jpg”, FXStreamLoad) {|stream|
image.loadPixels(stream)}
image.create
imageView.image = image

theApp.create
theMainWindow.show
theApp.run

1 Like