DevX Home    Today's Headlines   Articles Archive   Tip Bank   Forums   

+ Reply to Thread
Results 1 to 2 of 2
  1. #1
    Join Date
    Jul 2005
    Location
    SW MO, USA
    Posts
    299

    Plot zoom and double buffering

    Hi,
    I have a plot program that displaces nodes and connecting lines. The nodes represent WayPoints in a region of the globe.
    I initially scale the plot so that all of the nodes will show. Normally all the nodes are in a region, say the Caribbean Sea.
    The Lat/Long of the WPs are converted to pixels and mapped into the display.
    When I ZoomIn by X2, I change the number of pixels per degree of Lat/Long by X2 and then redraw the plot. I also allow the plot to be repositioned by click and drag with the mouse. The zooming works up to about 16X, which is adequate.


    The problem is there is a small amount of flickering because I don't double buffer the image.
    When I tried double buffering, I ran into problems with the createImage() method call trying to create TOO large an image after zooming in several times, The JVM runs out of space!

    My question: How do I draw the WP and connecting lines when zooming?

    Am I misusing the createImage() method? I'm having it create an image the size of the total zoomed area. This fails when the size of the area becomes too large!

    Is there a way to use translate() or the clip area?

    Why does the original Graphics context allow me to draw a plot up to about 16X with no problems?

    Thanks,
    Norm

    PS. This has posted on another site. Its sort of related to another topic on this site.

  2. #2
    Join Date
    Nov 2004
    Location
    Norway
    Posts
    1,560

    Just a couple of suggestions....

    I'm not sure about the zooming method you use. If I was to implement this
    I would have vectorized all the elements in the map and mapped those
    elements to a big internal matrix. I would have done this to avoid java
    image zooming, and instead used a fixed size display image that I could
    draw upon. The drawing would be of a selected subsection of this matrix,
    depending on the zoming scale and positioning of the view. I would need
    to get hold of the math for transposing matrix positions to a different scale
    though.
    As I see it, this would facilitate implementation of huge maps and extreme
    zooming, probably only limited by the amount of work that is put into the
    loading/creating of the maps.

    But doing this means a complete rehash of your application
    -----------------------

    You say you use createImage(), so I assume you are not using
    BufferedImage but plain Image ?.

    Have you tried:

    BufferedImage bufImg=new BufferedImage(w,h);
    Graphics bufG=bufImg.getGraphics();

    A BufferedImage can be typecast to Image. I'm not sure if this will fix your
    memory problem but I would have given it a try.
    eschew obfuscation

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
HTML5 Development Center
 
 
FAQ
Latest Articles
Java
.NET
XML
Database
Enterprise
Questions? Contact us.
C++
Web Development
Wireless
Latest Tips
Open Source


Top DevX Stories

Easy Web Services with SQL Server 2005 HTTP Endpoints
JavaOne 2005: Java Platform Roadmap Focuses on Ease of Development, Sun Focuses on the "Free" in F.O.S.S.
Wed Yourself to UML with the Power of Associations
Microsoft to Add AJAX Capabilities to ASP.NET
IBM's Cloudscape Versus MySQL


Sponsored Links