IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Limitation (ou bug ?) du composant TImage à 2000 x 2000 [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 132
    Points
    15 132
    Par défaut Limitation (ou bug ?) du composant TImage à 2000 x 2000
    Bonjour,

    j'avais dit que je ne posterais plus (je dis trop de bêtises), mais là, j'ai fait plusieurs tests et j'arrive toujours à la même conclusion, et c'est encore un truc marabouté ou mystérieux et incompréhensible, pour la bonne et simple raison que j'ai cherché fait chercher par l'ide partout dans les fichiers du projet la string "2000" sans rien trouver, et pourtant, si vous regardez ce petit montage, on a à gauche les résultats de calculs qui s'affichent dans un TImage de 1990 x 1990 et à droite les mêmes calculs mathématiques sont envoyés dans le même TImage mais seulement redimensionné dans l'ide à 2010 x 2010 :

    Nom : limitation_timage.jpg
Affichages : 207
Taille : 26,4 Ko

    Le problème impacte donc le fond de l'image car les calculs dessinent un cercle qui s'inscrit en bas et à droite sur les bandes noires, et ça se voit mieux avec cette première image à 2128 x 2128 :

    Nom : 2128.png
Affichages : 197
Taille : 127,5 Ko

    Quand j'ai vu ça j'ai failli tomber par terre !
    J'ai bien vérifié avec The Gimp, la zone gris-beige (les 4 coins autour du cercle) dans les images présentant le défaut fait exactement 2000x2000.
    Face à ça, je reste sans voix et sans savoir quoi faire...

    Juste que c'est bête car j'avais besoin d'une image de 2128...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #2
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Bonjour, ma 1ere question bête pourquoi as tu besoin d'une résolution de 2128 ?

    Est-ce que les propriétés ClientWidth et ClientHeight sont plus grande, inférieure ou égales en X et Y bien sur, par rapport à la résolution de ton bitmap ?

    à http://lazarus-ccr.sourceforge.net/d....onresize.html

    Common mistake: Keep in mind that ClientWidth and ClientHeight can change even when Width, Height stays the same. For example when the theme changes, the Width and Height remain the same, but the changed frame reduces the ClientWidth and ClientHeight. This does not happen that often under Windows, but it happens quite often on other platforms.
    ce qui pourrait donc provoquer des erreurs d'affichage

    Quelle est l'état des propriétés "Autosize, center, proportionnal, stretch" de ton TImage ?

    Une dernière question elles sont sympatoche tes icones , elles proviennent d'où ?
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 132
    Points
    15 132
    Par défaut
    Salut,

    Plein de questions et comme un imbécile j'ai oublié le principal ce midi en postant : ce n'est pas un problème d'affichage, c'est un problème d'enregistrement du fichier et cette équerre noire je la découvre en ouvrant le fichier pour voir ce que le programme a écrit.

    Pourquoi 2128 de large et de haut ?
    Hé bien parce que je voulais une image imprimée d'environ 18 cm (donc marges de 1,5 cm à g. et à d., tranquille sur une feuille A4) et je voulais une définition de 300 dpi pour avoir une très bonne qualité.

    Au tout début, j'ai adapté un code de S.O. (lui-même adapté d'un exemple d'efg dont on a déjà causé ici avec Thierry entre autres), l'idée derrière la tête étant d'imprimer une roue chromatique compressée sur 270° au lieu des 360° habituels, d'où le quart inférieur droit remplacé en post-prod' comm' on dit par du blanc et destiné à être éliminé d'un coup de cutter délicat, ensuite le reste du cercle délicatement découpé avec de bons ciseaux, 3 plis bien propres, un bout de languette gardé dans le carré blanc pas parfaitement carré, du coup, pour pouvoir coller un côté sur l'autre et hop !
    Nom : roue_chroma_3d.png
Affichages : 155
Taille : 232,6 Ko (le défaut dans le rouge en haut à droite c'est l'ombre de quelque chose, vu après...)

    Donc je disais que je suis parti d'un code d'efg qui dessine une roue chroma dans un TImage de 200x200 et sans notions de définition, juste pour voir les couleurs à l'écran. Cette notion intervient si on veut imprimer.

    Ensuite j'ai trafiqué son code (qui n'avait pas l'option "dégradés") grâce à celui trouvé sur S.O. (qu'il m'a fallu adapter because c'est du C#), j'ai comprimé le bazar à 270°, j'ai rajouté l'option pour enregistrer monTImage (qui entre-temps était passé à 512x512) et quand j'ai ouvert le fichier dans The Gimp, stupéfaction car l'image avait une définition de 2,54 dpi (lol !) et une taille d'un mètre environ...
    J'ai fouiné toute la matinée sur le web, j'ai trouvé (encore chez efg -- quelle mine d'or ce site !) une unité permettant de définir la... définition !, et de fil en aiguille les calculs m'ont amené à 2128x2128 @300 dpi pour avoir un superbe fichier (comme j'ai parfois l'habitude d'en travailler).

    Voilà.
    D'ailleurs, pour m'en sortir, j'ai fait une cuisine épouvantable () qui a consisté à générer un 1990x1990 et à demander gentiment à The Gimp de me monter l'image à 2128x2128, ce qu'il a fait, puis exportation pdf, un tour au Copy-machin du coin, retour at home, séance de découpage et coucou me revoilou !

    Et pour répondre à toute allure à ta multitude de questions, le code d'efg au départ est un projet de démo de travail avec les curseurs HSV et RGB, l'image est un TImage de base sans aucune option bizarre et rien de plus à en dire si ce n'est que je n'ai pas voulu me prendre la tête à essayer de faire afficher en réduction le résultat des calculs (dès que j'ai commencé à jouer avec de grands résultats), il me suffisait amplement d'enregistrer le fichier et de l'ouvrir pour voir de quoi il retournait : gain de temps énorme !
    Parce que je commence à avoir l'habitude, genre tu veux faire un truc tu te dis y en a pour 5 minutes et deux jours après tu es encore sur le web à la pêche aux exemples foireux, aux questions sans réponses, etc.
    (Par exemple, comme on avait beaucoup parlé des compos BGRA à un moment, ici, j'ai voulu voir ce que ça donnerait, d'autant plus que j'avais le code de Thierry : 5-10 minutes d'adaptation, ça fonctionne, je veux enregistrer le fichier et là, j'ai lâché l'affaire au bout d'une heure de recherches infructueuses... Retour au bon vieux TBitmap et valà !)
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 132
    Points
    15 132
    Par défaut
    Comment reproduire le bug ? Fastoche !

    Un nouveau projet, un bouton, un TImage, ses deux dimensions à 1990 - 1990 et c'est tout, et ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      image1.Canvas.Brush.Color := clGreen;
      image1.Canvas.FillRect(image1.Canvas.ClipRect);
     
      image1.Canvas.Brush.Color:=clRed;
      image1.Canvas.Ellipse(image1.ClientRect);
     
      image1.Picture.Graphic.SaveToFile('1990.bmp');
    end;
    Une fois le fichier 1990.bmp généré, vous arrêtez le prog, vous changez les dimensions de l'image et le nom du fichier en mettant 2010, vous relancez, le bug commence à apparaître.

    Vous arrêtez à nouveau, vous passez à 2110, vous relancez et là vous voyez nettement l'équerre de 110 pixels de large... Je ne suis pas allé plus loin.
    Nom : 2110.png
Affichages : 167
Taille : 5,8 Ko

    Bug présent également sous XP avec Laz1.6rc1
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 245
    Points : 534
    Points
    534
    Par défaut
    Bonsoir,
    Bizarre effectivement.
    Sous W10,
    Lazarus version: 1.7
    Lazarus svn revision: 53101
    Lazarus build date: 2016/10/12
    Lazarus was compiled for i386-win32
    Lazarus was compiled with fpc 3.1.1 compilé à la même date depuis le dépôt SVN trunk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    procedure TForm1.Button1Click(Sender:TObject);
    Var aRect:TRect;
    begin
        image1.Canvas.Brush.Color := clGreen;
        aRect:=image1.Canvas.ClipRect;
        image1.Canvas.FillRect(aRect);
     
        image1.Canvas.Brush.Color:=clYellow;
        image1.Canvas.Ellipse(image1.Canvas.ClipRect);
     
        image1.Canvas.Brush.Color:=clRed;
        image1.Canvas.Ellipse(aRect);
     
        image1.Picture.Graphic.SaveToFile('2100.bmp');
    end;
    Vous obtiendrez:
    Nom : 2100R.jpg
Affichages : 162
Taille : 5,1 Ko
    Alors que Image1 est dimensionné à 2100x2100, aRect inspecté lors de l'exécution fait 2000X2000.
    Le disque jaune fait bien 2100px de diamètre alors que le disque rouge fait 2000px.

    André

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 132
    Points
    15 132
    Par défaut
    Bonjour,

    et merci de ce test qui montre que cette fois je ne suis pas fou.

    Une chose très curieuse, cependant : je me suis amusé à comparer les lignes de code, et on pourrait penser, au vu des commentaires, que le coupable est le Canvas de l'image, qui serait limité à 2000x2000 mais une ligne démontre le contraire, donc hypothèse fausse et alors, du coup, on ne sait plus du tout qui coince, dans cette histoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    // jp
      image1.Canvas.Brush.Color := clGreen;
      image1.Canvas.FillRect(image1.Canvas.ClipRect);//Bad
     
      image1.Canvas.Brush.Color:=clRed;
      image1.Canvas.Ellipse(image1.ClientRect);//OK
     
    // andré
      image1.Canvas.Brush.Color := clGreen;
      aRect:=image1.Canvas.ClipRect;
      image1.Canvas.FillRect(aRect);//Bad
     
      image1.Canvas.Brush.Color:=clYellow;
      image1.Canvas.Ellipse(image1.Canvas.ClipRect);//OK
     
      image1.Canvas.Brush.Color:=clRed;
      image1.Canvas.Ellipse(aRect);//Bad

    J'insiste donc sur ce point :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      image1.Canvas.FillRect(image1.Canvas.ClipRect);//jp-Bad
      image1.Canvas.Ellipse (image1.Canvas.ClipRect);//andré-OK
    Ou alors ça vient de l'objet-cible utilisé ?

    Partant de là j'ai fait d'autres tests, et au final il semblerait que seule la première instruction pose souci, car si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      image1.Canvas.Brush.Color := clRed;
      image1.Canvas.FillRect(image1.Canvas.ClipRect);//Bad
     
      image1.Canvas.Brush.Color := clGreen;
      image1.Canvas.FillRect(image1.Canvas.ClipRect);//OK
    le résultat des commentaires ne change pas si j'inverse la ligne de définition de la couleur (encore heureux !) mais, en tout état de cause, j'ai un rectangle qui remplit toute l'image.

    Pour avoir un beau fond vert, il sufit donc de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      image1.Canvas.Brush.Color := clGreen;
      image1.Canvas.FillRect(image1.Canvas.ClipRect);//Bad
      image1.Canvas.FillRect(image1.Canvas.ClipRect);//OK
    Ce qui n'explique pas du tout pourquoi André a un cercle rouge raté...
    Donc encore un essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Var aRect:TRect;
    begin
      aRect:=image1.Canvas.ClipRect;
     
      image1.Canvas.Brush.Color:=clYellow;
      image1.Canvas.Ellipse(aRect); // pas vu donc caché par l'autre donc bad
     
      aRect:=image1.Canvas.ClipRect; // rajouté pour un second essai, et là, magie !
      image1.Canvas.Brush.Color:=clRed;
      image1.Canvas.Ellipse(aRect); // bad --> OK
    Notez bien la ligne "rajouté pour un second essai, et là, magie !" qui signifie que le premier essai s'est déroulé sans elle, avec comme résultat visible un rond rouge de 2000x2000 (le jaune doit être derrrière).
    Nom : eclipse_de_lune.png
Affichages : 208
Taille : 6,9 Ko
    On devine au second essai le bout du jaune qui doit être à 2000x2000 quand le rouge, grâce à la répétition de l'instruction, passe bien à 2300x2300 ! Go figure...

    Allez, j'ai autre chose à faire...

    EDIT : genre aller corriger le bug, donc, dans mon image de 2128x2128 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        // Fill with background color
        RESULT.Canvas.Brush.Color := BackGroundColor;
        RESULT.Canvas.FillRect(RESULT.Canvas.ClipRect);
        // doublé à cause du bug si supérieur à 2000x2000
        RESULT.Canvas.FillRect(RESULT.Canvas.ClipRect);
    Tip-top !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #7
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    Bonjour,

    En tout cas, le problème ne vient pas de TImage puisque le même comportement s'observe avec TBitmap :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    procedure TForm1.Button1Click(Sender:TObject);
    Var aRect:TRect;
      btmap: TBitmap;
    begin
        btmap := TBitmap.Create;
        try
          btmap.SetSize(2100,2100);
          btmap.Canvas.Brush.Color := clGreen;
          aRect:=btmap.Canvas.ClipRect;
          btmap.Canvas.FillRect(aRect);
     
          btmap.Canvas.Brush.Color:=clYellow;
          btmap.Canvas.Ellipse(btmap.Canvas.ClipRect);
     
          btmap.Canvas.Brush.Color:=clRed;
          btmap.Canvas.Ellipse(aRect);
          btmap.SaveToFile('2100.bmp');
        finally
          btmap.Free;
        end;
    end;
    Problème de streaming ???
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  8. #8
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Salut JP.

    Faire une répétition de la même instruction pour être OK ??? Non, il faut chercher ailleurs le problème.

    J'ai repris l'exemple d'André.
    De fait, j'obtiens le même résultat (les 2 ellipses n'ont pas la même taille).

    C'est l'usage de Canvas.ClipRect qui cause problème.

    Comme souvent, c'est la doc Delphi qui explique le mieux :

    Use ClipRect to determine where the canvas needs painting. ClipRect limits the drawing region of the canvas so that any drawing that occurs at coordinates outside the ClipRect is clipped and does not appear in the image.
    When handling a form's OnPaint event, the canvas' ClipRect property is set to the rectangle that needs to be painted. Portions of the image that do not overlap the ClipRect do not need to be drawn. Thus, OnPaint routines can use the value of ClipRect to optimize painting, speeding the overall performance of the application.
    Note: ClipRect can be modified using the SelectClipRgn Win32 API.


    Si je comprends bien, Canvas.ClipRect ne correspond pas toujours aux dimensions de TImage ("rectangle that needs to be painted"). Ce qui expliquerait le problème avec une image dépassant la taille de la fiche : à quoi bon la redessiner en entier, alors qu'on n'en voit qu'une partie.
    En utilisant : ARect:= Image1.ClientRect --> les 2 ellipses se superposent parfaitement. Peu importe la taille de l'image.

    Amicalement
    Thierry

  9. #9
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par ThWilliam Voir le message
    C'est l'usage de Canvas.ClipRect qui cause problème.


    Mais oui, c'est ça, bien sûr : j'ai moi aussi recopié le code sans faire attention à cette erreur pourtant courante ...

    Le code suivant fonctionne sans problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    procedure TForm1.Button1Click(Sender:TObject);
    var aRect:TRect;
      btmap: TBitmap;
    begin
      btmap := TBitmap.Create;
      try
        btmap.SetSize(2100,2100);
        aRect := Rect(0,0,2100,2100);
        btmap.Canvas.Brush.Color := clGreen;
        btmap.Canvas.FillRect(aRect);
     
     
        btmap.Canvas.Brush.Color:=clYellow;
        btmap.Canvas.Ellipse(aRect);
     
     
        btmap.Canvas.Brush.Color:=clRed;
        btmap.Canvas.Ellipse(aRect);
        btmap.SaveToFile('2100.bmp');
      finally
        btmap.Free;
      end;
    end;
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  10. #10
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par gvasseur58 Voir le message


    Mais oui, c'est ça, bien sûr : j'ai moi aussi recopié le code sans faire attention à cette erreur pourtant courante ...


    Même les meilleurs se foutent dedans, des fois, alors, car ce code (et le truc qui a fait percuter Thierry c'est parce que j'ai doublé l'instruction [moi aussi ça m'étonnait...]), on l'a tous vu puisqu'il est extrait du truc de chez efg dont j'ai causé, et dont on a déjà causé ! Thierry je suis sûr que tu y as participé puisque tu avais fourni un source s'appuyant sur les BGRA compos + un peu d'antialiasing, Gilles je crois que tu as vu tout ça aussi,

    Même efg s'est fait avoir, alors (extrait du source original) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        // Fill with background color
        RESULT.Canvas.Brush.Color := BackGroundColor;
        RESULT.Canvas.FillRect(RESULT.Canvas.ClipRect);
    Bravo Thierry, bien joué Gilles (j'ai testé c'est good, et même pas besoin d'enregistrer, une scrollbox avec un TImage dedans à la taille qui va bien et youp-là !), bon week-end à tous,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Surcharger la méthode Create du composant TImage
    Par ero-sennin dans le forum Delphi
    Réponses: 27
    Dernier message: 07/03/2007, 16h29
  2. Erreur composant TImage : "la classe n'existe pas"
    Par jeroe dans le forum Composants VCL
    Réponses: 2
    Dernier message: 05/03/2006, 16h46
  3. Composant TImage sur fenêtre MDI Parent
    Par charles.apollon dans le forum C++Builder
    Réponses: 6
    Dernier message: 10/02/2005, 15h47
  4. [BCB6]Redimentionnement manuel d'un composant TImage
    Par vsavoir dans le forum C++Builder
    Réponses: 4
    Dernier message: 22/09/2004, 11h55
  5. mettre a blanc le composant TImage
    Par Chonchon dans le forum Composants VCL
    Réponses: 2
    Dernier message: 16/11/2003, 09h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo