OVH Cloud OVH Cloud

Imprimer du texte sur une image

2 réponses
Avatar
jean saint jalmes
Bonjour,

Dans une appli VB6.0, je veux imprimer une image avec un texte au milieu. La
méthode suivante marche bien sauf que le fond du texte imprimé efface l'image
! Pouvez-vous m'aider ?

Sur ma feuille VB, j'ai un control Image (Image1) et un CommandButton (cmd1)

Private cmd1_Click()

Dim Texte as String

Image1.Picture = LoadPicture("my picture")
Printer.FontTransparent = True
Printer.PaintPicture Image1.Picture,0,0,Image1.Width,Image1.Height
Texte = "Bonjour"
Printer.CurrentX = (Image1.Width - Printer.TextWidth(Texte)) /2
Printer.CurrentY = (Image1.Height - Printer.TextHeight(Texte))/2
Printer.print Texte
Printer.EndDoc
end sub

2 réponses

Avatar
Pascal B.
Bonjour,

Il y a effectivement un bug avec la propriété FontTransparent de l'objet Printer.
Elle ne fonctionne pas toujours. Elle peut facilement être remplacé par une fonction API
dont voici un exemple:

Private Declare Function SetBkMode Lib "gdi32" _
(ByVal hdc As Long, ByVal nBkMode As Long) As Long

Private iBKMode as Long
Private Const TRANSPARENT = 1
Private Const OPAQUE = 2

iBKMode = SetBKMode(Printer.Hdc, TRANSPARENT)

Amicalement,
Pascal B.

"jean saint jalmes" wrote in message
news:
| Bonjour,
|
| Dans une appli VB6.0, je veux imprimer une image avec un texte au milieu. La
| méthode suivante marche bien sauf que le fond du texte imprimé efface l'image
| ! Pouvez-vous m'aider ?
|
| Sur ma feuille VB, j'ai un control Image (Image1) et un CommandButton (cmd1)
|
| Private cmd1_Click()
|
| Dim Texte as String
|
| Image1.Picture = LoadPicture("my picture")
| Printer.FontTransparent = True
| Printer.PaintPicture Image1.Picture,0,0,Image1.Width,Image1.Height
| Texte = "Bonjour"
| Printer.CurrentX = (Image1.Width - Printer.TextWidth(Texte)) /2
| Printer.CurrentY = (Image1.Height - Printer.TextHeight(Texte))/2
| Printer.print Texte
| Printer.EndDoc
| end sub
|
Avatar
christophe-pasde
Bonjour,

sic MSDN :
<<
Toute modification apportée à la propriété FontTransparent au moment de
l'exécution est sans effet sur le texte et les graphiques déjà dessinés
dans un objet Form, Printer ou un contrôle PictureBox.
<<

Au vu de votre code ça ne semble pas être le cas.
Mais ...
Faite le test en dessinant le texte et l'image dans une form
ou un picturebox.
En inversant les dessins, d'abord le texte après l'image.
Logiquement si vous dessinez correctement dans un picturebox ça ne
devrait pas poser de pbs avec l'imprimante, et les tests couterons moins
cher en encre.

Christophe


jean saint jalmes a écrit :

Bonjour,

Dans une appli VB6.0, je veux imprimer une image avec un texte au milieu. La
méthode suivante marche bien sauf que le fond du texte imprimé efface l'image
! Pouvez-vous m'aider ?

Sur ma feuille VB, j'ai un control Image (Image1) et un CommandButton (cmd1)

Private cmd1_Click()

Dim Texte as String

Image1.Picture = LoadPicture("my picture")
Printer.FontTransparent = True
Printer.PaintPicture Image1.Picture,0,0,Image1.Width,Image1.Height
Texte = "Bonjour"
Printer.CurrentX = (Image1.Width - Printer.TextWidth(Texte)) /2
Printer.CurrentY = (Image1.Height - Printer.TextHeight(Texte))/2
Printer.print Texte
Printer.EndDoc
end sub