CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 4 of 4
  1. #1
    Join Date
    Jul 2000
    Posts
    31

    Graphics - Canvas Repaint

    Hi,

    My application calls a class derived from the Canvas class. When I click on a draw button in my application, a new instance of this class is created and a grid is redrawn.

    I m facing a problem in this redrawing. Sometimes, when I click on the draw button, the paint method of the canvas class is executed, but it does not draw anything. However, if I minimise my window and get it up again, it redraws itself.. I don't know why sometimes the paint is executed and at other times it doesn't, since this kind of a behaviour is randomly observed.

    If anyone knows the reason, please help... it is very urgent.

    Thanks and regards,
    Manik


  2. #2
    Join Date
    Mar 2000
    Location
    Dublin, Ireland
    Posts
    124

    Re: Graphics - Canvas Repaint

    Manik,

    The answer is both simple and difficult:

    Along with the paint() method, you also have the repaint() method, which simply calls the paint() again.
    The other method to pay attention to is the update() method.
    You will notice that the update() method takes a Graphics object as a parameter, just like the paint() method.

    You must override these two other methods to properly control your drawing.
    The difficulty with these three drawing methods is knowing which one is called and when.

    To figure this out, simply do System.out.println within each of these methods. That way you can have a log of which method is called.

    Hope this helps.

    Regards,


    dogBear

    PS Please Rate this Response!!!!

  3. #3
    Join Date
    Sep 2000
    Location
    Melbourne --> Australia
    Posts
    68

    Re: Graphics - Canvas Repaint

    Hi
    When you call repaint(), the JVM' event Thread
    calls the Components update() method which
    clears the Clipping rectangle in the Components
    background color, and then calls the Components
    paint method.
    As dogbear suggested you should override update()
    otherwise the Components super update() method
    will be called, and that method wont do anything.

    -----------------

    public void paint(Graphics g){
    drawYourStuff
    }

    public void update(Graphics g){
    paint(g);
    }




    This is all you have to have in the update()
    method.

    Good luck
    Phill.



  4. #4
    Join Date
    Jul 2000
    Posts
    31

    Re: Graphics - Canvas Repaint

    Thanks Phill and Dogbear, for ur response...

    I tried overriding the update method.. Actually what is happening in my case is that the paint method is being executed properly... that is all the graphics.draw statements r being executed, but it is not showing up on the screen...

    this is a very random behaviour... it does the drawing most of the times, but once in around 20 times it just shows a blank background.. if i click on the canvas, everything reappears... i can't figure out why...

    thanks and regards,
    Manik


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured