BITMAP ET BRUSHES : TEXTE AVEC UNE TEXTURE

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 8 nov. 2003 à 03:29
lkhatiir Messages postés 1 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 7 novembre 2009 - 7 nov. 2009 à 22:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/17777-bitmap-et-brushes-texte-avec-une-texture

lkhatiir Messages postés 1 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 7 novembre 2009
7 nov. 2009 à 22:22
Génial, !
Très joli
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
23 nov. 2003 à 06:52
Un seul mot : Excellent !

Très bonne utilisation de la fonction PatBlt que l'on oublie bien souvent !

Bravo 10/10

DarK Sidious
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 nov. 2003 à 13:39
Bien sur, compatible depuis 98....

je pense sincerement que la technique est plus rapide que de regarder pixel par pixe...

un Brush, tu en utilise depuis toujours, sans le savoir.
Windows le fait constamment...
Ca fait partie des objets de base du GDI, a cote des Font et des Pens, par exemple...

en fait, ca definit un "materiau" avec lequel tu remplit ce que tu dessine.

si tu as deja utilisé des API, et apparemment c'est le cas, tu constatera que pour remplir un rectangle Rouge, tu crée un "Solid" Brush, qui est constitué d'une couleur : le rouge.....

ensuite, quand tu dessines, ca utilises le Brush que tu as selectionné.... et si ca deborde, tu observes un effet de mosaIque... ca doit pouvoir se changer, d'ailleurs, mais je n'ai jamais rien lu la dessus.

tu peux aussi choisir les coordonnées du point d'origine du Brush. je m'en sers d'ailleurs, sinon, parfois le Brush est décalé...

quoi dire d'autre... je ne sait pas trop.... si ce n'est qu'en faisant, tu comprendra surement plus qu'en me lisant ;-)


Bonne continuation. et merci.
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
12 nov. 2003 à 12:48
Humm...interressant, et peut etre que ta routine de remplissage par mosaique est plus rapide que la mienne... Je regarderais ce soir :o|

Pour ma part, je passais par les API putpixel et getpixel...Et comme je connais pô les brush, tu aurais quelques explications la-dessus ? compatible avec Win 98 et nt4 ?

NB: d'avance, 9/10 ;op
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 nov. 2003 à 08:24
vu que le texturing utilises un Brush, ca crée une mosaïque de ta texture....
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
12 nov. 2003 à 08:05
Interressant...

Avant de tester et noter (yest que 7h là :op), jaurais une tite question :

Quand le texte est plus grand que l'image, tu deforme l'image ou tu répéte l'image (mosaique avec l'image) ?

NB: Perso, je prefererais une mosaique, et si zà interesse, jai fais une source la-dessus qui devrait y aider ;o)
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005
9 nov. 2003 à 23:55
moi je te ferais bien passer a 8, mais il faudrais noter 12/10 ...

donc tant pis, je met 9 aussi ! :-D

ton truc va etre vachement pratique pour faire des interfaces un peu + agreables ...
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
9 nov. 2003 à 00:39
Arf si tu savais ... ça fait longtemp que j'en porte !
C'est pas gave on vas pourvoir t'appeler :
l'intello, le bigleu, le binoclar, l'oculaire defaillant, double foyer
l'oeil de verre, le press-bit (arf quel jeu de mot)

sinon pour ta note j'ai mis 9 pour arriver a 7 ben oui
6,33 ça fait (Hypothese) 9 + 9 + 1 (quel c*%n celui qui a mis 1,
encore un frustré) donc si on rajoute 7 sa fait 28
que je divise par 4 et qui me donne 7... pffiu ça travail
sec de la cafetiere !

sinon aussi tu pourrais encore gagner de la place dans ta
procedure en faisant:

Public Function DrawBrushedText(ByVal hdc As Long, ByVal x As Single, ByVal y As Single, ByVal Str As String, ByVal hBrush As Long) As Boolean
'# On assigne le Brush au DC, et on memorise l'ancien
Dim oldBrush As Long
Dim cSize As SIZE
oldBrush = SelectObject(hdc, hBrush)

'# On definit l'origine du motif
SetBrushOrgEx hdc, x, y, 0&

'# On recupere les dimensions du texte.
GetTextExtentPoint32 hdc, Str, Len(Str), cSize

'# On dessinne notre texte
PatBlt hdc, x, y, cSize.cw, cSize.ch, PATINVERT
TextOut hdc, x, y, Str, Len(Str)
DrawBrushedText = PatBlt(hdc, x, y, cSize.cw, cSize.ch, PATINVERT)

'# On remet l'ancien Brush dans le DC
SelectObject hdc, oldBrush
End Function

C@rdialement,

EB
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 nov. 2003 à 21:32
lol, surement....

reste que je viens d'apprendre que je dois porter des lunettes.....
ca use, je vous le dit !!!

mais qu'est-ce que j'aime ca....!!!
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
8 nov. 2003 à 21:00
Renfield>Tu tapotte trop sur ton pc :
une API... une gorgé de JB... une API... une gorgé de JB... lol
a force sa épuise ! lol

:-P

@+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 nov. 2003 à 13:29
ouais ouais, EB, on est d'accord, sur l'API....
Je m'en sers couramment, elle possede plus d'options !

mais la, je suis plus ou moins cloué.... j'ai un de ces mal de crâne !


merci encore ;-)
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
8 nov. 2003 à 11:39
Renfield> Aller je suis sur que tu nous cache encore
plein de merveille sur ton ordi...

;-)

Sinon pour l'API multiline c'est DrawText(Ex)
Elle est tres simple et dessine du text dans un rectangle

B@nne prog
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 2
8 nov. 2003 à 11:25
Si tu utilises une autre API que "l'habituelle" TextOut (donc qui sort de l'ordinaire), ne soit pas avare en commentaire pour nous permettre de connaître et comprendre cette API.

Merci.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 nov. 2003 à 11:14
j'avais meme pas vu que les textes multilignes posaient pb...
pas etonnant : j'utilises TextOut...

je vais simplement utiliser une autre API.... merci d'avoir pointé ca...



sinon, je passe très longtemps sur machine, mais je viens sur VbFrance, aussi depuis mon boulot, vu que ces temps - ci je suis pas trop occupé....

oula !! je viens de voir que j'ai même eu droit a la "notation des admins" !!
alors la, je sens que je vais devenir tout rouge...
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 2
8 nov. 2003 à 09:50
Génial...
J'ai apporté la petite modification suivante afin de permettre l'utilisation d'un texte multiligne :

Dim Phrases() As String
Phrases = Split(Txt.Text, vbCrLf)
Dim i As Integer
For i = 0 To UBound(Phrases) - 1
DrawBrushedText Me.hdc, 30, 80 + (i * Me.TextHeight(Phrases(i))), Phrases(i), hBrush
Next

PS: Dis-moi quand est-ce que tu dors ou que tu bosses ailleurs que sur ton PC ?
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 nov. 2003 à 03:29
Génial, comme d'hab !
Très joli, ça servira surement un de ces quatre ...
(W2000)
En plus, une source (adresse) avec que des 7 ou presque : je suis jalou
Rejoignez-nous