
histoire de faire avancé le problème ..car il y a quand même quelques choses de currieux...
Dans tout les cas ...ça ne m'aide pas pour mon code

ce n'est pas inconnu puisque pure basic te renseigne la dessus grace aSPH a écrit : je vais parler pour mon compte : c'est dut a de l'illogique qui veux que la largeur de la memoire de la carte graphique ne prend pas la meme largeur que le screen open... Alors, il faut bizzarement jongler avec l'inconnu...
Code : Tout sélectionner
*pixels\l = GetAlphaBlendedColor(*pixels\l, Couleur_Fond, Niveau_Transparence_Image)
*pixels + 4
Next a
SetDIBits_(hDC, hBmp1, 0, ImageWidth, mem, bmi, #DIB_RGB_COLORS)
Code : Tout sélectionner
Procedure.l GetAlphaBlendedColor(CouleurSource.l, CouleurFond.l, Alpha.l)
ProcedureReturn RGB((((Red(CouleurSource) * Alpha / 255) + ((Red(CouleurFond) * (255 - Alpha))) / 255)), (((Green(CouleurSource) * Alpha / 255) + ((Green(CouleurFond) * (255 - Alpha))) / 255)), (((Blue(CouleurSource) * Alpha / 255) + ((Blue(CouleurFond) * (255 - Alpha))) / 255)))
EndProcedure
donc ça c'est boncase a écrit :
ce n'est pas inconnu puisque pure basic te renseigne la dessus grace a
DrawingBufferPitch() pour connaitre la taille en octet d'une ligne du buffer utilisé par la carte graphique
DrawingBufferPixelFormat() pour connaitre le type de pixel utilises a savoir rrggbb ou bbggrr ou aabbggrr etc... 16 bits 8 bits ...
et ce n'est pas illogique c'est juste en raison de la rapidité de traitement pour la carte graphique.
lorsque tu utilise des nombres entiers on utilise un LONG (4 octet) et ce meme pour stocker le chiffre 1 qui ne prend qu'un seul bit en memoire.
ta carte graphique fonctionne sur le même principe elle utilise un buffer de x octets même si tu en utilise moins pour ton affichage.
Code : Tout sélectionner
Procedure rapide_Point(x,Y)
Select DrawingBufferPixelFormat()
Case #PB_PixelFormat_32Bits_RGB : PF=4:t=0
Case #PB_PixelFormat_32Bits_BGR : PF=4:t=1
Case #PB_PixelFormat_24Bits_RGB : PF=3:t=0
Case #PB_PixelFormat_24Bits_BGR : PF=3:t=1
Case #PB_PixelFormat_15Bits : PF=2:t=0 ; 2 octets par pixel
Case #PB_PixelFormat_16Bits : PF=2:t=0
Case #PB_PixelFormat_8Bits: PF=1
EndSelect
color= PeekL(DrawingBuffer() + (x * PF) +DrawingBufferPitch()* ( Y ) )
If t=1
Rouge=Red(color)
Vert=Green(color)
Bleu=Blue(color)
color=RGB(Bleu,Vert,Rouge)
EndIf
ProcedureReturn color
EndProcedure