Bonjour,
Je cherche à écrire un texte verticalement dans un TCanvas, et je n'ai rien trouvé dans la doc.
Auriez-vous une idée sur comment faire ca ?
Merci
Fred
Bonjour,
Je cherche à écrire un texte verticalement dans un TCanvas, et je n'ai rien trouvé dans la doc.
Auriez-vous une idée sur comment faire ca ?
Merci
Fred
Tu peux utiliser les rotations de FONTs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 LOGFONT lgfont; GetObject(Chart_Type1->Canvas->Font->Handle, sizeof(LOGFONT), &lgfont); lgfont.lfEscapement=AngleX; lgfont.lfOrientation=AngleY; lgfont.lfOutPrecision = OUT_TT_ONLY_PRECIS; Chart_Type1->Canvas->Font->Handle = CreateFontIndirect(&lgfont); SetGraphicsMode(Chart_Type1->Canvas->Handle, GM_ADVANCED); Canvas->TextOut(x,y,string);
Bonjour,
Merci pour ta réponse, mais je n'arrive pas à le faire fonctionner correctement. Le texte est tout tordu et pas joli.
Sinon ya la technique un peu bourin qui consiste à mettre des retours chariots à chaque lettre.
... enfin ... c'est une idée comme une autre
[Edit]
Oops désolé, j'avais pas vu que tu travaillais sur du TChart. je pensais que c'etait du TStringGrid.
Pour me ratrapper, je regarde si je trouve pas quelque chose
Salut, j'ai recopié tel quel la fonction donnée dans les truc est astuces, en l'adaptant au TChart. Cela me donne le code suivant:
Chez moi, le texte est affiché correctement. Essaye ce code, si cela ne fonctionne pas, peux tu me décrire comment s'affiche ton texte?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Chart1->Canvas->Font->Size = 10; Chart1->Canvas->Font->Name = "Arial"; LOGFONT lgf; GetObject(Chart1->Canvas->Font->Handle, sizeof(LOGFONT), &lgf); lgf.lfEscapement = 900; lgf.lfOrientation = 900; lgf.lfOutPrecision = OUT_TT_ONLY_PRECIS; Chart1->Canvas->Font->Handle = CreateFontIndirect(&lgf); SetGraphicsMode(Chart1->Canvas->Handle, GM_ADVANCED); Chart1->Canvas->Brush->Style = bsClear; //transparent AnsiString text1 = "Légende en Y"; Chart1->Canvas->TextOut(25,150, text1);
En fait le code de uriotcea est pas mal du tout je viens de faire un test et ça marche nikel chrome
Crée un nouveau projet avec juste un Form et tu mets le code suivant dans OnPaint du Form.
Il ne te reste plus qu'à jouer avec les différents paramètres du LOGFONT pour voir ce qui te convient le mieux au niveau rendu. Pour plus de detail fait un coup de F1 sur LOGFONT.
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 void __fastcall TForm1::FormPaint(TObject *Sender) { AnsiString str = "Texte à 90°"; LOGFONT lgfont; if(GetObject(Canvas->Font->Handle, sizeof(LOGFONT), &lgfont)) { lgfont.lfHeight = 20; lgfont.lfEscapement = 900; lgfont.lfOrientation = 900; lgfont.lfOutPrecision = OUT_TT_ONLY_PRECIS; Canvas->Font->Handle = CreateFontIndirect(&lgfont); SetGraphicsMode(Canvas->Handle, GM_ADVANCED); Canvas->TextOut(200, 200, str); } }
A+
[EDIT]
j'ai pas été assez rapide face à bandit boy![]()
Salut à tous,
Merci pour vos aides.
Ca marche nickel maintenant.
Je suis content....![]()
Merci
Fred
Partager