OVH Cloud OVH Cloud

GDI +

2 réponses
Avatar
Gaetan
Bonjour,
je dois créer un bitmap monochrome de taille fixe pour l'envoyer a une
imprimante.
Dans ce bit map j'ecris du text en utilisant GDI+.
Le probleme est que je ne parviens pas a avoir en sortie un bitmap monochrome.
le fichier généré fait 1M au lieu de 30k.
Si j'essaie de typer le bmp au départ ca plante a l'execution car il ne peux
pas gérer les format FormatXbppIndexed.

Bitmap bmp = new Bitmap(619,314);


Graphics gphText = Graphics.FromImage(bmp);
Font f = new Font ("Arial", 12, FontStyle.Bold | FontStyle.Italic);
gphText.DrawString("Sample", f, Brushes.White, new Point(10, 15));

bmp.Save("c:\\testbmp.bmp",System.Drawing.Imaging.ImageFormat.Bmp);
ceci fonctionne mais ne me donne pas un bitmap monochrome de taille valide
comme paint me le donnerait
y a-t-il un moyen de le convertir ? ou de le créer directement au bon format

le probleme étant que ceci plante :
Bitmap bmp = new
Bitmap(689,384,System.Drawing.Imaging.PixelFormat.Format8bppIndexed);
Graphics gphText = Graphics.FromImage(bmp);

2 réponses

Avatar
Cyril S.
MSDN dit :

Si l'image a un format pixel indexé, cette méthode lève une exception en
affichant le message « Un objet Graphics ne peut pas être créé à partir d'une
image au format pixel indexé. » Les formats pixel indexé sont indiqués dans
la liste suivante.

PixelFormat.Format1bppIndexed
PixelFormat.Format4bppIndexed
PixelFormat.Format8bppIndexed
Cette méthode lève aussi une exception si l'image a l'un des formats pixel
suivants.

PixelFormat.Undefined
PixelFormat.DontCare
PixelFormat.Format16bppArgb1555
PixelFormat.Format16bppGrayScale

Je pense qu'il faut utiliser les méthode Lock, SetPixel et Unlock..


--
CS


"Gaetan" wrote:

Bonjour,
je dois créer un bitmap monochrome de taille fixe pour l'envoyer a une
imprimante.
Dans ce bit map j'ecris du text en utilisant GDI+.
Le probleme est que je ne parviens pas a avoir en sortie un bitmap monochrome.
le fichier généré fait 1M au lieu de 30k.
Si j'essaie de typer le bmp au départ ca plante a l'execution car il ne peux
pas gérer les format FormatXbppIndexed.

Bitmap bmp = new Bitmap(619,314);


Graphics gphText = Graphics.FromImage(bmp);
Font f = new Font ("Arial", 12, FontStyle.Bold | FontStyle.Italic);
gphText.DrawString("Sample", f, Brushes.White, new Point(10, 15));

bmp.Save("c:testbmp.bmp",System.Drawing.Imaging.ImageFormat.Bmp);
ceci fonctionne mais ne me donne pas un bitmap monochrome de taille valide
comme paint me le donnerait
y a-t-il un moyen de le convertir ? ou de le créer directement au bon format

le probleme étant que ceci plante :
Bitmap bmp = new
Bitmap(689,384,System.Drawing.Imaging.PixelFormat.Format8bppIndexed);
Graphics gphText = Graphics.FromImage(bmp);





Avatar
Gaetan
ok, la je sais pourquoi, mais mon probleme maintenant est de trouver une
solution qui me donne un bitmap de taille valable que mon imprimante pourra
traiter
, comme celle-ci fonctionne en liaison sériel rs232, je ne peux me permettre
d'envoyer un bitmap d'1 MB il faut donc trouver comment faire pour générer un
fichier de +-30k sur base de la taille du bitmap.
j'arrive a un fichier de 6k en transférant un bit le bit map dans un bit
map avec le format 1bppindexed .


"Cyril S." a écrit :

MSDN dit :

Si l'image a un format pixel indexé, cette méthode lève une exception en
affichant le message « Un objet Graphics ne peut pas être créé à partir d'une
image au format pixel indexé. » Les formats pixel indexé sont indiqués dans
la liste suivante.

PixelFormat.Format1bppIndexed
PixelFormat.Format4bppIndexed
PixelFormat.Format8bppIndexed
Cette méthode lève aussi une exception si l'image a l'un des formats pixel
suivants.

PixelFormat.Undefined
PixelFormat.DontCare
PixelFormat.Format16bppArgb1555
PixelFormat.Format16bppGrayScale

Je pense qu'il faut utiliser les méthode Lock, SetPixel et Unlock..


--
CS


"Gaetan" wrote:

> Bonjour,
> je dois créer un bitmap monochrome de taille fixe pour l'envoyer a une
> imprimante.
> Dans ce bit map j'ecris du text en utilisant GDI+.
> Le probleme est que je ne parviens pas a avoir en sortie un bitmap monochrome.
> le fichier généré fait 1M au lieu de 30k.
> Si j'essaie de typer le bmp au départ ca plante a l'execution car il ne peux
> pas gérer les format FormatXbppIndexed.
>
> Bitmap bmp = new Bitmap(619,314);
>
>
> Graphics gphText = Graphics.FromImage(bmp);
> Font f = new Font ("Arial", 12, FontStyle.Bold | FontStyle.Italic);
> gphText.DrawString("Sample", f, Brushes.White, new Point(10, 15));
>
> bmp.Save("c:testbmp.bmp",System.Drawing.Imaging.ImageFormat.Bmp);
> ceci fonctionne mais ne me donne pas un bitmap monochrome de taille valide
> comme paint me le donnerait
> y a-t-il un moyen de le convertir ? ou de le créer directement au bon format
>
> le probleme étant que ceci plante :
> Bitmap bmp = new
> Bitmap(689,384,System.Drawing.Imaging.PixelFormat.Format8bppIndexed);
> Graphics gphText = Graphics.FromImage(bmp);
>
>
>