images in FXRuby

R

Raj Sahae

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
 
R

Raj Sahae

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.
 
L

Lyle Johnson

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:

<snip>

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
 
R

Raj Sahae

Lyle said:
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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,982
Messages
2,570,185
Members
46,738
Latest member
JinaMacvit

Latest Threads

Top