> Are you using a DisplayImplJ2D?
Erm, no. I have to use the 'makeDisplay(maps)' method in JyVisAD's subs.py
scripts which uses a DisplayImpl and not a DisplayImplJ2D. Using
'makeDisplay2D(maps)' with the requisite DisplayImplJ2D causes the program
to crash.
> What method are you calling replace the image?
See code excerpt below. Might be a tad confusing without a little
background:
The replaced image is a stretched version of the original image. So... I've
defined a method that stretches the original image and displays both this
(the stretched image) and everything that was previously displayed (makes a
new JPanel for everything etc) Very memory intensive. Trying to fix.
-------- start code -----------
displayPanel = JPanel(border=border.TitledBorder("Display Panel"),
layout=GridLayout(1,2,5,5))
#add original image first
displayPanel.add(disp.getComponent())
#add display plot panel
displayPanel.add(plotd.getComponent())
pane.add("Center", displayPanel)
#some program calls to add stretched image when buttons are clicked
buttonPanel = JPanel(border=border.TitledBorder("Y-Stretch Controls"),
layout=BorderLayout(0, 20))
stretchButton=JButton("x2", preferredSize=(100,20), actionPerformed=twist1)
buttonPanel.add(stretchButton, BorderLayout.CENTER)
#define a twist grid for stretching the image in pre-defined amounts (y
direction only)
def twist1(event):
twist_grid = [ [w for h in xrange(height) for w in xrange(width)] ,
[(w-(h*0.5)) for h in xrange(height) for w in xrange(width)]]
twist_set = Gridded2DSet(set.getType(), twist_grid, width, height, None,
None, None, 0)
twist = FlatField(img.getType(), twist_set)
twist.setSamples(img.getValues(Boolean(0)),0)
#some formatting to convert this into an image
twistdom = getDomainType(twist)
twistrng = getRangeType(twist)
twist_maps = subs.makeMaps(twistdom[0],'x', twistdom[1],'y',
twistrng[0],'red',twistrng[1],'green',twistrng[2],'blue')
#make maps for it!
dispt = subs.makeDisplay(twist_maps)
dispt.addData("twisted",twist)
dispt.setBoxSize(.5)
#them make a display panel for it that overwrites the entire display
displayPanel2 = JPanel(border=border.TitledBorder("Display Panel"),
layout=GridLayout(1,2,5,5))
displayPanel2.add(dispt.getComponent())
displayPanel2.add(plotd.getComponent())
pane.add("Center", displayPanel2)
-------- end code -----------
The above appears to work except that stretched image only updates on
'maximising' JFrame which holds all. What should I be doing?
Many thanks,
Chi-chi
----- Original Message -----
From: Bill Hibbard <billh@xxxxxxxxxxxxx>
To: Chi-chi Ekweozor <cce100@xxxxxxxxxx>
Sent: Thursday, May 15, 2003 12:59 PM
Subject: Re: Repainting images in JyVisAD
> Hi Chi-chi,
>
> > I wonder if anyone's come across this before. I'm trying to update a 2D
display by replacing the image mapped onto it with another image. The only
problem is the replacement image is not displayed unless I 'maximise' the
JFrame containing the display.
>
> Are you using a DisplayImplJ2D?
>
> What method are you calling replace the image?
>
> Please send the relevant portion of code to visad-list.
>
> Cheers,
> Bill
>
>