DIMUSERS
Messages postés37Date d'inscriptionjeudi 8 juin 2006StatutMembreDernière intervention 2 septembre 2010
-
6 janv. 2008 à 15:37
DIMUSERS
Messages postés37Date d'inscriptionjeudi 8 juin 2006StatutMembreDernière intervention 2 septembre 2010
-
10 janv. 2008 à 19:20
Bonjour à tous,
Voici mon problème :
Je souhaiterai convertir une chaîne de caractères formatée (exemple avec un soulignement et en italique) en un BitMap, dans le but de transformer ce BitMap en Texture. Idéalement, je souhaiterai que cette chaine n'apparaisse pas à l'écran.
Partant d'un BitMap en mémoire, je pense savoir le transformer en texture (via un stream). Mais je n'arrive pas a faire la première partie.
Je tourne gravement en rond.
Avez vous des idées ?
cs_niky
Messages postés168Date d'inscriptionjeudi 28 juin 2001StatutMembreDernière intervention18 octobre 20087 7 janv. 2008 à 14:25
Salut,
Je pense que la première étape consiste à créer ta bitmap (via le constructeur de System.Drawing.Bitmap).
Ensuite, tu créés un objet System.Drawing.Graphics (via la méthode statique FromImage de la classe Graphics). Cette objet Graphics va te permettre de dessiner sur la bitmap (méthodes DrawString).
DIMUSERS
Messages postés37Date d'inscriptionjeudi 8 juin 2006StatutMembreDernière intervention 2 septembre 2010 7 janv. 2008 à 21:54
Merci niky, en effet c'est la bonne méthode, mais avec le GDI+
Je poste le programme à la suite. Mais la difficulté que je n'arrive pas à surmonter est de faire la même chose avec le GDI c'est à dire en utilisant soit gdi.dll et TexOut, soit le TextRenderer.
Merci de votre aide.// LE CODE EN GDI+
DIMUSERS
Messages postés37Date d'inscriptionjeudi 8 juin 2006StatutMembreDernière intervention 2 septembre 2010 7 janv. 2008 à 21:54
Merci niky, en effet c'est la bonne méthode, mais avec le GDI+
Je poste le programme à la suite. Mais la difficulté que je n'arrive pas à surmonter est de faire la même chose avec le GDI c'est à dire en utilisant soit gdi.dll et TexOut, soit le TextRenderer.
Merci de votre aide.// LE CODE EN GDI+
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
using
System.Runtime.InteropServices;
using
WinFont
= System.Drawing.
Font
;
namespace
App01{
public
partial
class
Form1
:
Form
{
String
Chaine;
private
void
Test(){
Bitmap
bmp =
new
Bitmap
(200,
this
.Font.Height );
Graphics
gBmp =
Graphics
.FromImage(bmp);
SolidBrush
brLine =
new
SolidBrush
(
Color
.Black);gBmp.DrawString(Chaine,
this
.Font, brLine,
new
Point
(0, 0));bmp.Save(
"c:\\xxx.bmp"
);}
public
Form1(){
this
.Show();Chaine =
"Hello"
;Test();
}
}
}
// FIN
st.antoine
Vous n’avez pas trouvé la réponse que vous recherchez ?
Un System.Drawing.Bitmap est en mémoire une image manipulable directement avec les API GDI+. Tu peux d'ailleurs obtenir un pointeur dessus (avec LockBits), une image compatible GDI (avec GetHBitmap) ou le contexte de périphérique (hDC).
DIMUSERS
Messages postés37Date d'inscriptionjeudi 8 juin 2006StatutMembreDernière intervention 2 septembre 2010 8 janv. 2008 à 19:00
Merci de ta réponse, en fait j'utilise pour afficher du texte le GDI qui est annoncé par Microsoft comme plus rapide que le GDI+. J'ai besoin d'afficher du texte formatté composé de différentes fontes et couleurs pendant un intervalle de temps très court (entre 2 images d'un mpeg).
Je voudrai obtenir le même résultat que les programme ci-dessus mais en utilisant TextOut, c'est à dire créer une image à partir d'un affichage de texte. J'utiliserai ensuite cette image comme texture d'un sprite que je ferai défiler sous mon image (Une sorte de sous-titre mais qui défilerait)
Voilà ce que j'ai écrit qui ne fonctionne pas (en fait j'obtiens une image noire).
// Assign the compatible bitmap to the device context
// ????????????????????????????????????????????????
// C'est surement ce qui suit qui est faux, mais je sèche
// ????????????????????????????????????????????????