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
| Public Contenu As String
Public RCompo As Byte
Public GCompo As Byte
Public BCompo As Byte
Public TmpVar As Long
Public ColorStr As String
Public OctetPos As Long
Public Varbyte As Byte
Public Large As Single 'largeur de l'image
Public Hauteur As Single 'Hauteur de l'image
Public OctetLigne As Integer 'contient le nombre d'octet par ligne
'======================================================================================
'======================================================================================
Public Sub InfosBmp(Adresse As String)
Contenu = Space(FileLen(Adresse))
Open Adresse For Binary As #1
Get #1, , Contenu
Get #1, 19, Varbyte 'recupère la premiere partie de la largeure
Large = Varbyte
Get #1, 20, Varbyte 'recupère la seconde partie
Large = Large + Varbyte * 256
Get #1, 23, Varbyte
Hauteur = Varbyte
Get #1, 24, Varbyte
Hauteur = Hauteur + Varbyte * 256
Close #1
'Calcul le nombre d'octet par ligne
OctetLigne = (FileLen(Adresse) - 54) / Hauteur
End Sub
'======================================================================================
'======================================================================================
Public Sub GetPixPos(PixColor As Long, PixX As Single, PixY As Single)
BCompo = CByte(Int(PixColor / 65536))
PixColor = PixColor - BCompo * 65536
TmpVar = Int(PixColor / 256)
GCompo = CByte(TmpVar)
TmpVar = CLng(GCompo) * 256
PixColor = PixColor - TmpVar
RCompo = CByte(PixColor)
ColorStr = Chr(BCompo) & Chr(GCompo) & Chr(RCompo)
OctetPos = InStr(Contenu, ColorStr)
If OctetPos <> 0 Then
PixY = Int((OctetPos - 55) / OctetLigne)
PixX = (OctetPos - 55 - OctetLigne * PixY) / 3
PixY = Hauteur - PixY - 1
Else
PixX = -1
PixY = -1
End If
End Sub |
Partager