From: Patrick Hurley Date: 2006-02-03T03:22:16+09:00 Subject: Re: FXRuby Image Scaling question On 2/2/06, Patrick Hurley wrote: > I have a screen with a logo on it, I would like the logo to scale with > screen size. I have tried more than a couple variations on: > > # Construct an image > @logo = FXPNGImage.new(getApp(), File.open("logo.png", "rb").read, > IMAGE_KEEP) > > # Prep an image Frame > image = FXImageFrame.new(self, @logo, LAYOUT_FILL_X | LAYOUT_FILL_Y) > image.backColor = FXColor::Blue > > image.connect(SEL_CONFIGURE) do |sender, sel, evt| > if image.width > 100 && image.height > 100 > @logo.scale(image.width, image.height) > end > end > > This works, but the image "degrades" from all the scaling. How would I > go about keeping the original image? Any sort of "dup" on the FXImage > results in an exception (at least for me). > > Thanks in advance > pth > > Ok I am still very interested if there is a better solution, but this works for me: # Construct an image @logo = FXPNGImage.new(getApp(), File.open("logo.png", "rb").read, IMAGE_KEEP) stream = FXMemoryStream.open(FXStreamSave,nil) @logo.savePixels(stream) puts stream @buffer = stream.takeBuffer stream.close p @buffer # Prep an image Frame image = FXImageFrame.new(self, @logo, LAYOUT_FILL_X | LAYOUT_FILL_Y) image.backColor = FXColor::Blue image.connect(SEL_CONFIGURE) do |sender, sel, evt| if image.width > 100 && image.height > 100 stream = FXMemoryStream.open(FXStreamLoad, @buffer) @logo.loadPixels(stream) @logo.scale(image.width, image.height) stream.close end end end