MODIFICATION IMAGE VIA ACTION BUTTON

Bonjour tous,
je rencontre un souci pour "redessiner " une image originale import dans un canvas via un “push_Button” ,

Le code ci dessous permet d’importer une image via glisser dposer, et celle=ci est automatiquement mis l’chelle demand ,
ce code fonctionne lors d’une utilisation directe. (c’est dire en utilisant le code sans condition d’un click sur un bouton), l’image est donc directement redessin, selon les paramtres demandes ),

Mais cela ne fonctionne pas des que je veux que cela s’execute via l’action d’un click sur un push_Button. (j’ai mis un boolean si action du pushbouton).

Dans ce cas prcis ,selon le code ci dessous, il ne se passe rien lors du click sur un pushbutton, l’image reste la mme, et elle n’est pas redessine dans le canvas.
Mais par contre, lors d’un nouveau glisser dposer d’une image tout de suite aprs ,celle-ci est redessine automatiquement !? (comme si l’action du click button tait pris en compte mais l’instruction s’effectuait aprs un nouveau glisser dposer.

Evidemment quelque chose n’est pas bon dans mon code, mais l je ne vois pas …

Merci pour votre aide, en esprant d’avoir t clair.
Amts Thierry

[ [b] if app.mImage<> nil then

  //  image import dans canvas ddi via glisser dposer,mis  l'echelle 
  g.DrawPicture(app.mImage, 0,0, g.Width, g.Height, 0,0,app.mImage.Width, app.mImage.Height)
  g.ForeColor = &cA1CBFF
  g.DrawRect( 0, 0, g.Width, g.Height )
  
 ..... 
  app.photobordblanc=new picture(244,330,32)// photo originale 
  app.photobordblanc.Graphics.DrawPicture(app.mImage,0,0,app.photobordblanc.Width,app.photobordblanc.Height,11,16,244,330)//la photo rduite 
  .....
  // on redessine la photo rduite si appui bouton// boolean 

  [b]if app.contourblanc=true then 
    
    g.DrawPicture(app.photobordblanc, 0,0, g.Width, g.Height, 0,0,app.photobordblanc.Width, app.photobordblanc.Height)
    g.ForeColor = &cA1CBFF
    g.DrawRect( 0, 0, g.Width, g.Height )

[/b] end if

end if[/b]

Tu n’as pas demandé la mise à jour du dessin…

g.DrawPicture, etc. dessine l’image, mais le système n’est pas informé qu’un refresh est nécessaire.

Utilises donc g.Invalidate et çà devrait marcher.

à mettre après g.DrawRect( 0, 0, g.Width, g.Height) et avant End If (findu code.

Vois:
http://documentation.xojo.com/api/deprecated/rectcontrol.html#rectcontrol-refresh
http://documentation.xojo.com/api/deprecated/rectcontrol.html#rectcontrol-invalidate

Bonjour Emile,
merci pour ton aide, malheureusement cela ne fonctionne pas,
ce qui est “trange” c’est que si tu enlve la condition et que tu demandes un “drawpicture” la suite, ca fonctionne (sans spcialement utilis un refresh) !!! , c’st comme si il ne prenait pas en compte la condition dans l’instant lorsque tu appuies sur un bouton.
si tu as d’autres solutions merci d’avance
Bien cordialement Thierry

Bonjour,

Où est mis ce code ?

Il faut demander un refresh du canvas lorsque le bouton est appuyé et après avoir fixé la valeur du boolean.
Et tout le code de dessin doit être dans l’event Paint du canvas en question.

Bonjour Eric,
Merci !Ca fonctionne ! Effectivement l’ensemble du code tait bien dans l’ event paint , mais l’erreur tait que je plaais le “Refresh” dans l 'event paint et non dans l 'vent “Action” du Push_button … Encore merci !
Bien cordialement Thierry

Je n’avais pas remarqué.

Heureusement que ça ne marchait pas, sinon tu aurais eu du "flash"