Salut,
Je voudrais bien savoir comment l'on peut transformer un texte en image.
Exemple transformer par exemple le mot "NICA" en image.
Merci de m'aider.
Salut,
Je voudrais bien savoir comment l'on peut transformer un texte en image.
Exemple transformer par exemple le mot "NICA" en image.
Merci de m'aider.
salut
Salut,
Je ne suis pas expert en la matière.
Une possibilité (pas optimale je l'avoue) et d'avoir une image de chaque lettre que tu peux par la suite appondres pour former le mot. Désavantage : tu auras beaucoup d'images et le texte rendu ne sera pas optimale.
Bonne journée
Idee : recuperer les pixels des polices puis tracer le tout sur un bitmap.
Probleme : lire le format des polices
Pour ce qui est de recuperer les pixels des polices,t'as pas un bout de code qui pourrait me donner des pistes.
Merci.
salut
Salut
A moins que j'ai mal compris la question, pourquoi ne pas utiliser un TBitmap sur lequel tu dessines le texte (TextOut) sur le Canvas?
Pedro
Aucune réponse aux sollicitations techniques par MP
Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)
Les pages Source C'est bon. Mangez-en!
Le défi Delphi
Règles du forum - FAQ Delphi - Pensez au chtit
Aéroclub Bastia Saint-Exupéry
pour transformer le txt d'un memo en bmp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 with TBitmap.Create do try PixelFormat := pf1bit; Width := Form1.Memo1.ClientWidth; Height := Form1.Memo1.ClientHeight; Canvas.CopyRect(Rect(0, 0, Width, Height), Form1.Canvas, Rect( Form1.Memo1.Left, Form1.Memo1.Top, Form1.Memo1.Left+Width, Form1.Memo1.Top+Height)); SaveToFile('Memo1.bmp'); finally Free; end;
En gros, tu veux, à partir :Envoyé par sessime
-d'un texte
-et d'une Police de caractère de ton choix.
Obtenir un fichier bitmap ? Est-ce bien ça ?
En fait, voici l'algorithme :
- Choisir le texte et la Police
- Créer un Bitmap (TBitmap)
- Dessiner le texte sur le Canvas du Bitmap
- Sauvegarder le Bitmap dans un Fichier
A moins que tu préfère dans Un Windows Meta File (fichier Vectoriel)
Bref, précise, et je pourrais sans doute te mettre du code
Bidouilleuse Delphi
waskol,je suis interessé par ta proposition et je suis preneur si tu peux m'envoyer un bout de code .
Merci
salut
Voici donc une unité contenant une procedure toute faite :
Exemple d'utilisation :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 unit UnitDessineTexte; interface uses Windows,Graphics,Types; Procedure ConvertirTexteEnBitmap(Texte:string;NomdeFichierEnSortie:string;DessinEnCreux:boolean;Police:TFont=nil); implementation //Calcule la taille EXACTE d'un texte à partir d'une police de caractères choisie (Marche avec tous types de Polices : TrueType, etc...) function TextSize(Phrase:string;police:TFont=nil):TPoint; var DC: HDC; Rect: TRect; C : TBitmap; begin C := TBitmap.Create; try if police <> nil then C.canvas.Font := police; Rect:=Bounds(0,0,0,0); DC := GetDC(0); C.Canvas.Handle := DC; DrawText(C.Canvas.Handle, PChar(Phrase), Length(Phrase), Rect, (DT_EXPANDTABS or DT_CALCRECT)); C.Canvas.Handle := 0; ReleaseDC(0, DC); result.X:=Rect.Right; result.Y:=Rect.Bottom; finally C.Free; end; end; procedure DessineTexteSurCanvasEnCreux(ACanvas:TCanvas;ARect:TRect; Phrase:string;police:TFont=nil); procedure NettoyerCanvas; begin with ACanvas do begin Brush.Style := bsSolid; Brush.Color := clWhite; FillRect(ARect); end; end; procedure ConvertirEnPolygone; var DC : hDC; aPoints : Array of TPoint; aTypes : Array of Byte; iNumPoints : integer; begin ACanvas.Brush.Style := bsClear; ACanvas.Font := police; DC := ACanvas.Handle; //On récupère le texte sous forme de polygone BeginPath(DC); DrawText(DC, pchar(Phrase),length(Phrase), ARect, DT_EXPANDTABS); EndPath(DC); iNumPoints := GetPath(DC,aPoints,aTypes,0); SetLength(aPoints,iNumPoints); SetLength(aTypes,iNumPoints); iNumPoints := GetPath(DC,aPoints[0],aTypes[0],iNumPoints); PolyDraw(DC,aPoints[0],aTypes[0],iNumPoints); end; // procedure Convert begin NettoyerCanvas; ConvertirEnPolygone; end; procedure DessineTexteSurCanvas(ACanvas:TCanvas;ARect:TRect; Phrase:string;police:TFont=nil); begin if police <> nil then Acanvas.Font := police; DrawText(ACanvas.Handle, PChar(Phrase), Length(Phrase), ARect, (DT_EXPANDTABS)); end; Procedure ConvertirTexteEnBitmap(Texte:string;NomdeFichierEnSortie:string;DessinEnCreux:boolean;Police:TFont=nil); var UnBitmap:TBitmap; APoint:TPoint; Rect: TRect; begin UnBitmap:=TBitmap.Create; APoint:=TextSize(Texte,Police); if police <> nil then UnBitmap.canvas.Font := police; UnBitmap.Width:=APoint.X; UnBitmap.Height:=APoint.Y; rect:=Bounds(0,0,APoint.X,APoint.Y); if DessinEnCreux then DessineTexteSurCanvasEnCreux(UnBitmap.Canvas,Rect,Texte,Police) else DessineTexteSurCanvas(UnBitmap.Canvas,Rect,Texte,Police); UnBitmap.SaveToFile(NomdeFichierEnSortie); UnBitmap.Free; end; end.
J'espère que ça te servira
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 begin FontDialog1.Execute; if SavePictureDialog1.Execute then ConvertirTexteEnBitmap('Bonjour !',SavePictureDialog1.FileName,True,FontDialog1.Font); end;
Bidouilleuse Delphi
Beaucoup mieux que ce que j'ai fait...
Je n'abstiens donc...
8)Envoyé par yoghisan
Bidouilleuse Delphi
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager