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 :

Comportement différent du TBitmap selon qu'on utilise LoadFromFile ou FillRect / TextOut [Lazarus]


Sujet :

Lazarus Pascal

  1. #21
    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 133
    Points
    15 133
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Ca ca ne viens pas de moi mais de L'IDE (Je l'ai fais en 1.8RC4 64bit) Tu as utilisé quelle version ?? La 1.4 ?
    Oui ! J'ai dit que je migrerai un mois après la mise à disposition de la 1.8 définitive.

    Citation Envoyé par BeanzMaster Voir le message
    et Alors ???? je comprend pas bien ce que tu veux dire
    C'est quoi toutes ces instructions de copies pour un simple SetSize qui, comme son nom l'indique, devrait définir des tailles et c'est tout :
    Citation Envoyé par BeanzMaster Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      // for delphi compatibility copy old image
     
        // use slow copy of pixeldata till rawimage can also copy to larger destination
     
          NewIntfImage.CopyPixels(CurIntfImage);

    Citation Envoyé par BeanzMaster Voir le message
    En quoi c'est pas bon ? C'est normal que le texte disparaisse le Bmp a une hauteur de 128 si tbPosY.Position = 128, le texte n'est pas dessiner. Il faudrait borner : 128-TextHeight('H') pour qu'il ne sorte pas.
    Ben perso je trouve ça très moche ; mon trackbar est vertical : curseur en haut le texte est tout en haut, et curseur en bas le texte est tout en bas, j'y trouve une certaine logique. Bon, c'est un poil plus compliqué que simplement 128-TextHeight('H'), surtout s'il est prévu de jouer sur la taille de la police, mais ce n'est pas insurmontable, sauf quand il faut cliquer deux fois pour faire une action, relis mon dernier post.
    Et sur ce coup-là j'ai essayé tout ce qui me passait par la tête (Frame.Repaint, .Update, Image.Refresh, etc.) sans aucun résultat si ce n'est des SIGSEGV...
    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. #22
    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
    Citation Envoyé par Jipété Voir le message
    Oui ! J'ai dit que je migrerai un mois après la mise à disposition de la 1.8 définitive.


    C'est quoi toutes ces instructions de copies pour un simple SetSize qui, comme son nom l'indique, devrait définir des tailles et c'est tout :

    Ben perso je trouve ça très moche ; mon trackbar est vertical : curseur en haut le texte est tout en haut, et curseur en bas le texte est tout en bas, j'y trouve une certaine logique. Bon, c'est un poil plus compliqué que simplement 128-TextHeight('H'), surtout s'il est prévu de jouer sur la taille de la police, mais ce n'est pas insurmontable, sauf quand il faut cliquer deux fois pour faire une action, relis mon dernier post.
    Et sur ce coup-là j'ai essayé tout ce qui me passait par la tête (Frame.Repaint, .Update, Image.Refresh, etc.) sans aucun résultat si ce n'est des SIGSEGV...
    Pour le Font.Size sois mise à jour : TTextStyle.SystemFont := False;Voila comment j'ai rajouté un trackbar pour controler le "Font.Height'. J'ai changé la fonction de dessin du texte dans mon example, ça fonctionne :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    procedure TForm1.DoDrawTheText;
    Var
      aTextStyle : TTextStyle;
      my : Integer;
    begin
     BmpText.BeginUpdate(True);
     With BmpText.Canvas do
     begin
       Brush.Style := bsSolid;
       Brush.Color := clWhite;
       FillRect(0,0,400,128);
       Font.Color  := clYellow;
       Font.Height := tbFontSize.Position;
       With aTextStyle do
       begin
         Alignment :=  taCenter;
         Layout :=tlTop;
         SingleLine := False;
         WordBreak := True;
         Opaque := False;
         RightToLeft := False;
         SystemFont := False; // ---> FALSE sinon Canvas.Font.Size/Height ne sont pas mise à jour
         EndEllipsis := True;
       End;
       Brush.Style := bsClear;
       Brush.Color := clNone;
       my := tbPosY.Position;
       if my> 127 then my := my -TextHeight(edtText.Text)-1;  // Valable seulement si le text tiens sur une seule ligne. A voir comment calculer si sur plusieurs lignes
       TextRect(Rect(4,0,396,128),4,my,edtText.Text,aTextStyle);
     End;
     BmpText.EndUpdate();
    end;
    Nom : 2017-09-10_204257.jpg
Affichages : 157
Taille : 20,1 KoNom : 2017-09-10_204321.jpg
Affichages : 150
Taille : 26,1 Ko
    • "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. #23
    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 133
    Points
    15 133
    Par défaut
    Salut à tous,

    Citation Envoyé par Jipété Voir le message
    Alors je re-clique pour réafficher la boîte de dialogue, je me contente de cliquer sur OK sans rien changer et là c'est enfin bon, le TextHeight est pris en compte et les calculs qui en découlent sont bons !
    La nuit porte conseil, dit-on, ben moi c'est l'extinction de la machine !
    Hier soir après l'avoir arrêtée je me suis dit "bon sang, c'est ça qu'il fallait essayer !"

    Ça quoi ? demandez-vous, impatients. Ben, ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TfrmContrast.btnFont4imageClick(Sender: TObject);
    begin
      if fdlg.Execute then begin
        FontName := fdlg.Font.Name;
        FontSize := fdlg.Font.Size;
        FontStyle:= fdlg.Font.Style;
        img4contrast.Canvas.Font.Name :=FontName;  // ajout
        img4contrast.Canvas.Font.Size :=FontSize;  // ajout
        img4contrast.Canvas.Font.Style:=FontStyle; // ajout
      end;
    end;
    Et je ne pouvais pas avoir l'idée de rajouter ces 3 lignes puisque sans elles le TImage reflétait quand même les changements.
    Allez comprendre...

    Bonne journée,
    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. #24
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    dis moi pourquoi faire compliqué alors que l'on peut faire plus simple
    je reprend ton exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    begin
      if fdlg.Execute then begin
        FontName := fdlg.Font.Name;
        FontSize := fdlg.Font.Size;
        FontStyle:= fdlg.Font.Style;
        img4contrast.Canvas.Font.Name :=FontName;  // ajout
        img4contrast.Canvas.Font.Size :=FontSize;  // ajout
        img4contrast.Canvas.Font.Style:=FontStyle; // ajout
      end;
    end;
    moi j'aurais fait ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    begin
      if fdlg.Execute then 
        img4contrast.Canvas.Font :=fdlg.Font;  // ajout
    end;
    a moins d'une incompatibilité dans les fonts je ne vois aucune raison de le faire autrement
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  5. #25
    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 133
    Points
    15 133
    Par défaut
    Citation Envoyé par anapurna Voir le message
    salut

    dis-moi pourquoi faire compliqué alors que l'on peut faire plus simple
    Parce que ça ne se voit pas dans l'exemple, mais les trois variables FontName, FontSize et FontStyles sont utilisées ailleurs,

    Mais c'est gentil d'y avoir pensé
    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

  6. #26
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    ce ne serait pas plus simple d'utiliser une variable TFont par hasard ?
    tes 3 variables seront toutes attachées à une entité commune ... je dis ça je dis rien ^^
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. SimUnlockPhone comportement différent selon les téléphones
    Par bobby51 dans le forum Windows Mobile
    Réponses: 0
    Dernier message: 29/04/2011, 10h43
  2. Comportement différent de cos() selon contexte de l'appel
    Par dreydrey dans le forum Bibliothèque standard
    Réponses: 3
    Dernier message: 10/01/2011, 17h01
  3. Réponses: 7
    Dernier message: 15/02/2010, 21h52
  4. Comportement différent selon le lanceur
    Par michelcky dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 03/10/2008, 19h03
  5. Comportement différent selon Mode Execution
    Par MarronSuisse dans le forum C
    Réponses: 7
    Dernier message: 14/04/2008, 12h52

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