[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| Re: [udig-devel] Draw RenderedImage | 
Hello and happy new year to all
Le 4 janv. 06 à 11:32, Iñigo Telleria Elola a écrit :
I want to draw an RenderedImage (obtained from udig's map) in a SWT  
shell. I have tried differents possibilties:
1) with GC, but this object doesn't have any method to draw  
RenderedImage (only Image).
2) with SWTGraphics, It doesn't work.
3) with Graphics2D, I don't know how to use.
anybody has an idea how I can achieve?
Thanks in advance
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel
here some (very partial)code i am using into an SWT Canvas :
public class ImageCanvas extends Canvas implements MouseListener,  
MouseMoveListener{
private Composite parent;
 private Shell dialog;
 private PaintEvent curevent=null;
private Listener resizeListener=null;
 private PaintListener paintListener=null;
private Dimension displaySize = new Dimension(20, 20);
private Rectangle curclientArea;
 private RenderedImage imageToDraw=null;
public ImageCanvas(Shell dialog, Composite parent)
    {
        this(dialog,parent,0);
    }
    public ImageCanvas(Shell dialog, Composite parent, int style ) {
        super(parent, style);
    try{
        resizeListener = new Listener(){
            public void handleEvent( Event event ) {
                Point size = getSize();
                 displaySize = new Dimension(Math.min(size.x,  
size.y),Math.min(size.x, size.y)); // i want a square)
            }
        };
        addListener(SWT.Resize, resizeListener);
    this.parent=parent;
    this.dialog=dialog;
    paintListener = new PaintListener()
    {
      public void paintControl(PaintEvent event)
      {
          curevent=event;
          curclientArea = getClientArea();
         onPaint(event);
      }
    };
    addPaintListener(paintListener);
    }catch(Exception e)
    {
        e.printStackTrace();
    }
}
public Dimension getDisplaySize() {
        return displaySize;
    }
    public void setDisplaySize(int width,int height) {
        displaySize = new Dimension(width, height);
        dialog.redraw();
        dialog.update();
    }
    /**
     * @see net.refractions.udig.project.render.MapDisplay#getWidth()
     */
    public int getWidth() {
        return getDisplaySize().width;
    }
    /**
     * @see net.refractions.udig.project.render.MapDisplay#getHeight()
     */
    public int getHeight() {
        return getDisplaySize().height;
    }
protected void onPaint(final PaintEvent event)
{
      final Display display = event.display;
    final GC gc = event.gc;
    final Rectangle rect = curclientArea;
    if (rect.width == 0 || rect.height == 0) return;
    final SWTGraphics swtGraphics = new SWTGraphics(gc, display,  
getDisplaySize());
    if (imageToDraw != null)
    {
         swtGraphics.drawImage(imageToDraw, 0, 0, getWidth(),  
getHeight(), 0, 0, param.cols, param.filas);
    }
      swtGraphics.dispose();
    /*
         */
         System.out.println("onPaint done");
}
hope this help !
Jacques Divol
Ingénieur de Recherche temp Unité Espace-IRD
@mail :jacques.divol@xxxxxxxxxxxxxxxx