Je suis en train d'étudier la focntion API proposée par Zoury pour tracer
des hachures de différentes largeur. Je bute sur les paramètres. Qui peut
m'en dire plus ?
Je pense que l'on doit créer un motif en indiquant dans un rectangle quels
pixels sont allumés ou éteints. Le motif est ensuite recopié en hauteur et
en largeur comme sur un papier peint.
Declare Function CreateBitmap Lib "gdi32" Alias "CreateBitmap" (ByVal nWidth
As Long, ByVal nHeight As Long, ByVal nPlanes As Long, ByVal nBitCount As
Long, lpBits As Any) As Long
· nWidth
Specifies the bitmap width, in pixels.
ça à priori j'ai compris c'est le nombre de bits utilisés en largeur pour
définir le motif
· nHeight
Specifies the bitmap height, in pixels.
Toujours à priori, il s'agit du nombre de lignes du motif
· cPlanes
Specifies the number of color planes used by the device.
???
· cBitsPerPel
Specifies the number of bits required to identify the color of a single
pixel.
???
· lpvBits
Points to an array of color data used to set the colors in a rectangle of
pixels. Each scan line in the rectangle must be word aligned (scan lines
that are not word aligned
A priori le premier élément d'un tableau représentant la première ligne ???
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
christophe-pasde
Bonjour,
Te fache pas Zoury mais il vaut mieux oublier la fonction CreateBitmap pour les bitmap couleur et lui préférer CreateCompatibleBitmap.
Ensuite : voir mes commentaires en regards.
Patrice Henrio a écrit :
> Je suis en train d'étudier la focntion API proposée par Zoury pour tracer des hachures de différentes largeur. Je bute sur les paramètres. Qui peut m'en dire plus ? > Je pense que l'on doit créer un motif en indiquant dans un rectangle quels pixels sont allumés ou éteints. Le motif est ensuite recopié en hauteur et en largeur comme sur un papier peint. > > Declare Function CreateBitmap Lib "gdi32" Alias "CreateBitmap" (ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Long, ByVal nBitCount As Long, lpBits As Any) As Long > > · nWidth > Specifies the bitmap width, in pixels. > ça à priori j'ai compris c'est le nombre de bits utilisés en largeur pour définir le motif
Non il s'agit du nombre de Pixel
> > · nHeight > Specifies the bitmap height, in pixels. > Toujours à priori, il s'agit du nombre de lignes du motif
Oui mais en pixel
> · cPlanes > Specifies the number of color planes used by the device. > ???
Nombre de plans de couleur (1 pour toi et d'une façon générale)
> > · cBitsPerPel > Specifies the number of bits required to identify the color of a single pixel. > ???
Nommé normalement bibitcount : qui est le nombre de bits par pixel (1 pour Noir et Blanc 8 pour 256 couleur ...)
> · lpvBits > Points to an array of color data used to set the colors in a rectangle of pixels. Each scan line in the rectangle must be word aligned (scan lines that are not word aligned > A priori le premier élément d'un tableau représentant la première ligne ???
Pointeur sur la matrice de donnée chaque ligne étant alignée sur 16 bit. Sachant que cette définition 16 bit correspond à win95 et 98 ce qui renvoi à mon premier commentaire,car d'une manière générale les lignes de balayage d'une image sont alignées sur 32bits sous Windows et non plus 16.
A+
Christophe
Bonjour,
Te fache pas Zoury mais il vaut mieux oublier la fonction CreateBitmap
pour les bitmap couleur et lui préférer CreateCompatibleBitmap.
Ensuite :
voir mes commentaires en regards.
Patrice Henrio a écrit :
> Je suis en train d'étudier la focntion API proposée par Zoury pour
tracer des hachures de différentes largeur. Je bute sur les paramètres.
Qui peut m'en dire plus ?
> Je pense que l'on doit créer un motif en indiquant dans un rectangle
quels pixels sont allumés ou éteints. Le motif est ensuite recopié en
hauteur et en largeur comme sur un papier peint.
>
> Declare Function CreateBitmap Lib "gdi32" Alias "CreateBitmap" (ByVal
nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Long, ByVal
nBitCount As Long, lpBits As Any) As Long
>
> · nWidth
> Specifies the bitmap width, in pixels.
> ça à priori j'ai compris c'est le nombre de bits utilisés en largeur
pour définir le motif
Non il s'agit du nombre de Pixel
>
> · nHeight
> Specifies the bitmap height, in pixels.
> Toujours à priori, il s'agit du nombre de lignes du motif
Oui mais en pixel
> · cPlanes
> Specifies the number of color planes used by the device.
> ???
Nombre de plans de couleur (1 pour toi et d'une façon générale)
>
> · cBitsPerPel
> Specifies the number of bits required to identify the color of a
single pixel.
> ???
Nommé normalement bibitcount : qui est le nombre de bits par pixel (1
pour Noir et Blanc 8 pour 256 couleur ...)
> · lpvBits
> Points to an array of color data used to set the colors in a
rectangle of pixels. Each scan line in the rectangle must be word
aligned (scan lines that are not word aligned
> A priori le premier élément d'un tableau représentant la première
ligne ???
Pointeur sur la matrice de donnée chaque ligne étant alignée sur 16 bit.
Sachant que cette définition 16 bit correspond à win95 et 98 ce qui
renvoi à mon premier commentaire,car d'une manière générale les lignes
de balayage d'une image sont alignées sur 32bits sous Windows et non
plus 16.
Te fache pas Zoury mais il vaut mieux oublier la fonction CreateBitmap pour les bitmap couleur et lui préférer CreateCompatibleBitmap.
Ensuite : voir mes commentaires en regards.
Patrice Henrio a écrit :
> Je suis en train d'étudier la focntion API proposée par Zoury pour tracer des hachures de différentes largeur. Je bute sur les paramètres. Qui peut m'en dire plus ? > Je pense que l'on doit créer un motif en indiquant dans un rectangle quels pixels sont allumés ou éteints. Le motif est ensuite recopié en hauteur et en largeur comme sur un papier peint. > > Declare Function CreateBitmap Lib "gdi32" Alias "CreateBitmap" (ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Long, ByVal nBitCount As Long, lpBits As Any) As Long > > · nWidth > Specifies the bitmap width, in pixels. > ça à priori j'ai compris c'est le nombre de bits utilisés en largeur pour définir le motif
Non il s'agit du nombre de Pixel
> > · nHeight > Specifies the bitmap height, in pixels. > Toujours à priori, il s'agit du nombre de lignes du motif
Oui mais en pixel
> · cPlanes > Specifies the number of color planes used by the device. > ???
Nombre de plans de couleur (1 pour toi et d'une façon générale)
> > · cBitsPerPel > Specifies the number of bits required to identify the color of a single pixel. > ???
Nommé normalement bibitcount : qui est le nombre de bits par pixel (1 pour Noir et Blanc 8 pour 256 couleur ...)
> · lpvBits > Points to an array of color data used to set the colors in a rectangle of pixels. Each scan line in the rectangle must be word aligned (scan lines that are not word aligned > A priori le premier élément d'un tableau représentant la première ligne ???
Pointeur sur la matrice de donnée chaque ligne étant alignée sur 16 bit. Sachant que cette définition 16 bit correspond à win95 et 98 ce qui renvoi à mon premier commentaire,car d'une manière générale les lignes de balayage d'une image sont alignées sur 32bits sous Windows et non plus 16.
A+
Christophe
Patrice Henrio
Merci Christophe. J'ai quelques questions supplémentaires
"christophe-pasde<> @wanadoo.fr>" <"christophe-pasde<> a écrit dans le message de news: 42a9967d$0$3304$
Bonjour,
Te fache pas Zoury mais il vaut mieux oublier la fonction CreateBitmap pour les bitmap couleur et lui préférer CreateCompatibleBitmap.
Ensuite : voir mes commentaires en regards.
Nommé normalement bibitcount : qui est le nombre de bits par pixel (1 pour Noir et Blanc 8 pour 256 couleur ...)
Au delà j'imagine que les valeurs sont 16, 32, 64 ? Les pixels à 1 sont coloriés dans la couleur foreColor j'imagine, et ceux à 0 sont transparents ou sont coloriés avec BackColor ?
> · lpvBits > Points to an array of color data used to set the colors in a rectangle of pixels. Each scan line in the rectangle must be word aligned (scan lines that are not word aligned > A priori le premier élément d'un tableau représentant la première ligne ???
Pointeur sur la matrice de donnée chaque ligne étant alignée sur 16 bit. Sachant que cette définition 16 bit correspond à win95 et 98 ce qui renvoi à mon premier commentaire,car d'une manière générale les lignes de balayage d'une image sont alignées sur 32bits sous Windows et non plus 16.
L'alignement sur 32 ou 16 bits doit-il être réalisé par le programme ou se fait-il automatiquement à l'exécution. Doit-il se faire avec la partie haute ou la partie basse ? Plus concrètement 255 s'écrit-il "0000 0000 0000 0000 0000 0000 1111 1111" ou "1111 1111 0000 0000 0000 0000 0000 0000", voire même dasn un format plus exotique ? Quand tu dis 16 ou 32 bits, faut-il adapter cette matrice au nombre de bits occupés par un pixel ? As-tu un exemple de réalisation à me fournir (en VB, j'en ai trouvé en C/C++ mais ça m'a paru compliqué).
Merci.
Patrice
Merci Christophe. J'ai quelques questions supplémentaires
"christophe-pasde<> @wanadoo.fr>" <"christophe-pasde<> a écrit dans le
message de news: 42a9967d$0$3304$8fcfb975@news.wanadoo.fr...
Bonjour,
Te fache pas Zoury mais il vaut mieux oublier la fonction CreateBitmap
pour les bitmap couleur et lui préférer CreateCompatibleBitmap.
Ensuite :
voir mes commentaires en regards.
Nommé normalement bibitcount : qui est le nombre de bits par pixel (1 pour
Noir et Blanc 8 pour 256 couleur ...)
Au delà j'imagine que les valeurs sont 16, 32, 64 ?
Les pixels à 1 sont coloriés dans la couleur foreColor j'imagine, et ceux à
0 sont transparents ou sont coloriés avec BackColor ?
> · lpvBits
> Points to an array of color data used to set the colors in a
rectangle of pixels. Each scan line in the rectangle must be word aligned
(scan lines that are not word aligned
> A priori le premier élément d'un tableau représentant la première
ligne ???
Pointeur sur la matrice de donnée chaque ligne étant alignée sur 16 bit.
Sachant que cette définition 16 bit correspond à win95 et 98 ce qui renvoi
à mon premier commentaire,car d'une manière générale les lignes de
balayage d'une image sont alignées sur 32bits sous Windows et non plus 16.
L'alignement sur 32 ou 16 bits doit-il être réalisé par le programme ou se
fait-il automatiquement à l'exécution.
Doit-il se faire avec la partie haute ou la partie basse ?
Plus concrètement 255 s'écrit-il "0000 0000 0000 0000 0000 0000 1111 1111"
ou "1111 1111 0000 0000 0000 0000 0000 0000", voire même dasn un format plus
exotique ?
Quand tu dis 16 ou 32 bits, faut-il adapter cette matrice au nombre de bits
occupés par un pixel ?
As-tu un exemple de réalisation à me fournir (en VB, j'en ai trouvé en C/C++
mais ça m'a paru compliqué).
Merci Christophe. J'ai quelques questions supplémentaires
"christophe-pasde<> @wanadoo.fr>" <"christophe-pasde<> a écrit dans le message de news: 42a9967d$0$3304$
Bonjour,
Te fache pas Zoury mais il vaut mieux oublier la fonction CreateBitmap pour les bitmap couleur et lui préférer CreateCompatibleBitmap.
Ensuite : voir mes commentaires en regards.
Nommé normalement bibitcount : qui est le nombre de bits par pixel (1 pour Noir et Blanc 8 pour 256 couleur ...)
Au delà j'imagine que les valeurs sont 16, 32, 64 ? Les pixels à 1 sont coloriés dans la couleur foreColor j'imagine, et ceux à 0 sont transparents ou sont coloriés avec BackColor ?
> · lpvBits > Points to an array of color data used to set the colors in a rectangle of pixels. Each scan line in the rectangle must be word aligned (scan lines that are not word aligned > A priori le premier élément d'un tableau représentant la première ligne ???
Pointeur sur la matrice de donnée chaque ligne étant alignée sur 16 bit. Sachant que cette définition 16 bit correspond à win95 et 98 ce qui renvoi à mon premier commentaire,car d'une manière générale les lignes de balayage d'une image sont alignées sur 32bits sous Windows et non plus 16.
L'alignement sur 32 ou 16 bits doit-il être réalisé par le programme ou se fait-il automatiquement à l'exécution. Doit-il se faire avec la partie haute ou la partie basse ? Plus concrètement 255 s'écrit-il "0000 0000 0000 0000 0000 0000 1111 1111" ou "1111 1111 0000 0000 0000 0000 0000 0000", voire même dasn un format plus exotique ? Quand tu dis 16 ou 32 bits, faut-il adapter cette matrice au nombre de bits occupés par un pixel ? As-tu un exemple de réalisation à me fournir (en VB, j'en ai trouvé en C/C++ mais ça m'a paru compliqué).
Merci.
Patrice
christophe-pasde
Re,
Je vais essayer d'être clair:
Une image (ou un bitmap c'est la même chose) est composé d'une sucession de ligne horizontale que l'on appel ligne de balayage.
Le nombre de ces lignes est la hauteur de l'image en pixel. Pour la longueur c'est plus compliqué, on y viendra après.
Chaque ligne est composée de pixel.
Chaque pixel est codé en mémoire sur : 1 bit pour le noir et blanc : donc pour une image noir et blanc, un octet de donnée contient 8 pixel.
4 bit pour 16 couleurs et nuance de gris (un octet = 2 pixel)
8 bit pour les images 256 couleur 1 octet = 1 pixel
24 bit pour les images truecolor: 3 octets= 1 pixel chaque octet contient respectivement la valeur du bleu, du vert, du rouge.
32 ç'est encore plus coton ...
Revenons à la ligne de balayage: elle est alignée sur 32 bit (ou 16 dans ton cas) ce qui veut dire que la longueur en octet de la ligne est un multiple de 4 (ou 2 dans ton cas).
Si pour une image 256 couleur (1 pixel = 1 octet) j'ai une largeur de 11 pixel, la longeur de la ligne en octet sera : 12 octet (là ça marche pour les deux 16 et 32) pour une image noir et blanc de 11 pixel l'image fera 4 octet ou 2 (respect 32 et 16). Car 11 pixel = 11 bit (1 octet + 3 bit ) mais alignement sur 32 donc : 4 octets mini.
Voilà en gros comment ça marche.
Pour ton pb de hachure qui est le même que celui des "pointillés large" fait attention les pinceau définis par l'utilisateur sont: 16 pixel * 16 pixel pour 95 et 98 32 * 32 pour le reste.
A+
Christophe
Re,
Je vais essayer d'être clair:
Une image (ou un bitmap c'est la même chose) est composé d'une sucession
de ligne horizontale que l'on appel ligne de balayage.
Le nombre de ces lignes est la hauteur de l'image en pixel.
Pour la longueur c'est plus compliqué, on y viendra après.
Chaque ligne est composée de pixel.
Chaque pixel est codé en mémoire sur :
1 bit pour le noir et blanc : donc pour une image noir et blanc, un
octet de donnée contient 8 pixel.
4 bit pour 16 couleurs et nuance de gris (un octet = 2 pixel)
8 bit pour les images 256 couleur 1 octet = 1 pixel
24 bit pour les images truecolor: 3 octets= 1 pixel chaque octet
contient respectivement la valeur du bleu, du vert, du rouge.
32 ç'est encore plus coton ...
Revenons à la ligne de balayage: elle est alignée sur 32 bit (ou 16 dans
ton cas) ce qui veut dire que la longueur en octet de la ligne est un
multiple de 4 (ou 2 dans ton cas).
Si pour une image 256 couleur (1 pixel = 1 octet) j'ai une largeur de 11
pixel, la longeur de la ligne en octet sera : 12 octet (là ça marche
pour les deux 16 et 32)
pour une image noir et blanc de 11 pixel l'image fera 4 octet ou 2
(respect 32 et 16). Car 11 pixel = 11 bit (1 octet + 3 bit ) mais
alignement sur 32 donc : 4 octets mini.
Voilà en gros comment ça marche.
Pour ton pb de hachure qui est le même que celui des "pointillés large"
fait attention les pinceau définis par l'utilisateur sont:
16 pixel * 16 pixel pour 95 et 98
32 * 32 pour le reste.
Une image (ou un bitmap c'est la même chose) est composé d'une sucession de ligne horizontale que l'on appel ligne de balayage.
Le nombre de ces lignes est la hauteur de l'image en pixel. Pour la longueur c'est plus compliqué, on y viendra après.
Chaque ligne est composée de pixel.
Chaque pixel est codé en mémoire sur : 1 bit pour le noir et blanc : donc pour une image noir et blanc, un octet de donnée contient 8 pixel.
4 bit pour 16 couleurs et nuance de gris (un octet = 2 pixel)
8 bit pour les images 256 couleur 1 octet = 1 pixel
24 bit pour les images truecolor: 3 octets= 1 pixel chaque octet contient respectivement la valeur du bleu, du vert, du rouge.
32 ç'est encore plus coton ...
Revenons à la ligne de balayage: elle est alignée sur 32 bit (ou 16 dans ton cas) ce qui veut dire que la longueur en octet de la ligne est un multiple de 4 (ou 2 dans ton cas).
Si pour une image 256 couleur (1 pixel = 1 octet) j'ai une largeur de 11 pixel, la longeur de la ligne en octet sera : 12 octet (là ça marche pour les deux 16 et 32) pour une image noir et blanc de 11 pixel l'image fera 4 octet ou 2 (respect 32 et 16). Car 11 pixel = 11 bit (1 octet + 3 bit ) mais alignement sur 32 donc : 4 octets mini.
Voilà en gros comment ça marche.
Pour ton pb de hachure qui est le même que celui des "pointillés large" fait attention les pinceau définis par l'utilisateur sont: 16 pixel * 16 pixel pour 95 et 98 32 * 32 pour le reste.
A+
Christophe
Patrice Henrio
Merci de ta réponse. A priori cela signifie que si l'on veut faire quelque chose qui fonctionne aussi bien en 98 qu'en XP, il faut tester le système d'exploitation utilisé et créer deux procédures ?
"christophe-pasde<> @wanadoo.fr>" <"christophe-pasde<> a écrit dans le message de news: 42a9b63d$0$11721$
Re,
Je vais essayer d'être clair:
Une image (ou un bitmap c'est la même chose) est composé d'une sucession de ligne horizontale que l'on appel ligne de balayage.
Le nombre de ces lignes est la hauteur de l'image en pixel. Pour la longueur c'est plus compliqué, on y viendra après.
Chaque ligne est composée de pixel.
Chaque pixel est codé en mémoire sur : 1 bit pour le noir et blanc : donc pour une image noir et blanc, un octet de donnée contient 8 pixel.
4 bit pour 16 couleurs et nuance de gris (un octet = 2 pixel)
8 bit pour les images 256 couleur 1 octet = 1 pixel
24 bit pour les images truecolor: 3 octets= 1 pixel chaque octet contient respectivement la valeur du bleu, du vert, du rouge.
32 ç'est encore plus coton ...
Revenons à la ligne de balayage: elle est alignée sur 32 bit (ou 16 dans ton cas) ce qui veut dire que la longueur en octet de la ligne est un multiple de 4 (ou 2 dans ton cas).
Si pour une image 256 couleur (1 pixel = 1 octet) j'ai une largeur de 11 pixel, la longeur de la ligne en octet sera : 12 octet (là ça marche pour les deux 16 et 32) pour une image noir et blanc de 11 pixel l'image fera 4 octet ou 2 (respect 32 et 16). Car 11 pixel = 11 bit (1 octet + 3 bit ) mais alignement sur 32 donc : 4 octets mini.
Voilà en gros comment ça marche.
Pour ton pb de hachure qui est le même que celui des "pointillés large" fait attention les pinceau définis par l'utilisateur sont: 16 pixel * 16 pixel pour 95 et 98 32 * 32 pour le reste.
A+
Christophe
Merci de ta réponse.
A priori cela signifie que si l'on veut faire quelque chose qui fonctionne
aussi bien en 98 qu'en XP, il faut tester le système d'exploitation utilisé
et créer deux procédures ?
"christophe-pasde<> @wanadoo.fr>" <"christophe-pasde<> a écrit dans le
message de news: 42a9b63d$0$11721$8fcfb975@news.wanadoo.fr...
Re,
Je vais essayer d'être clair:
Une image (ou un bitmap c'est la même chose) est composé d'une sucession
de ligne horizontale que l'on appel ligne de balayage.
Le nombre de ces lignes est la hauteur de l'image en pixel.
Pour la longueur c'est plus compliqué, on y viendra après.
Chaque ligne est composée de pixel.
Chaque pixel est codé en mémoire sur :
1 bit pour le noir et blanc : donc pour une image noir et blanc, un octet
de donnée contient 8 pixel.
4 bit pour 16 couleurs et nuance de gris (un octet = 2 pixel)
8 bit pour les images 256 couleur 1 octet = 1 pixel
24 bit pour les images truecolor: 3 octets= 1 pixel chaque octet contient
respectivement la valeur du bleu, du vert, du rouge.
32 ç'est encore plus coton ...
Revenons à la ligne de balayage: elle est alignée sur 32 bit (ou 16 dans
ton cas) ce qui veut dire que la longueur en octet de la ligne est un
multiple de 4 (ou 2 dans ton cas).
Si pour une image 256 couleur (1 pixel = 1 octet) j'ai une largeur de 11
pixel, la longeur de la ligne en octet sera : 12 octet (là ça marche pour
les deux 16 et 32)
pour une image noir et blanc de 11 pixel l'image fera 4 octet ou 2
(respect 32 et 16). Car 11 pixel = 11 bit (1 octet + 3 bit ) mais
alignement sur 32 donc : 4 octets mini.
Voilà en gros comment ça marche.
Pour ton pb de hachure qui est le même que celui des "pointillés large"
fait attention les pinceau définis par l'utilisateur sont:
16 pixel * 16 pixel pour 95 et 98
32 * 32 pour le reste.
Merci de ta réponse. A priori cela signifie que si l'on veut faire quelque chose qui fonctionne aussi bien en 98 qu'en XP, il faut tester le système d'exploitation utilisé et créer deux procédures ?
"christophe-pasde<> @wanadoo.fr>" <"christophe-pasde<> a écrit dans le message de news: 42a9b63d$0$11721$
Re,
Je vais essayer d'être clair:
Une image (ou un bitmap c'est la même chose) est composé d'une sucession de ligne horizontale que l'on appel ligne de balayage.
Le nombre de ces lignes est la hauteur de l'image en pixel. Pour la longueur c'est plus compliqué, on y viendra après.
Chaque ligne est composée de pixel.
Chaque pixel est codé en mémoire sur : 1 bit pour le noir et blanc : donc pour une image noir et blanc, un octet de donnée contient 8 pixel.
4 bit pour 16 couleurs et nuance de gris (un octet = 2 pixel)
8 bit pour les images 256 couleur 1 octet = 1 pixel
24 bit pour les images truecolor: 3 octets= 1 pixel chaque octet contient respectivement la valeur du bleu, du vert, du rouge.
32 ç'est encore plus coton ...
Revenons à la ligne de balayage: elle est alignée sur 32 bit (ou 16 dans ton cas) ce qui veut dire que la longueur en octet de la ligne est un multiple de 4 (ou 2 dans ton cas).
Si pour une image 256 couleur (1 pixel = 1 octet) j'ai une largeur de 11 pixel, la longeur de la ligne en octet sera : 12 octet (là ça marche pour les deux 16 et 32) pour une image noir et blanc de 11 pixel l'image fera 4 octet ou 2 (respect 32 et 16). Car 11 pixel = 11 bit (1 octet + 3 bit ) mais alignement sur 32 donc : 4 octets mini.
Voilà en gros comment ça marche.
Pour ton pb de hachure qui est le même que celui des "pointillés large" fait attention les pinceau définis par l'utilisateur sont: 16 pixel * 16 pixel pour 95 et 98 32 * 32 pour le reste.
A+
Christophe
Zoury
Salut Christophe !
Te fache pas Zoury mais il vaut mieux oublier la fonction CreateBitmap pour les bitmap couleur et lui préférer CreateCompatibleBitmap.
Pas de danger ! :O) J'avais conseiller à Patrice de jeter un oeil sur les fonctions CreatePatternBrush() et CreateDIBPatternBrushPt(). Il a trouvé CreateBitmap() tout seul . ;O)
-- Cordialement Yanick MVP pour Visual Basic
Salut Christophe !
Te fache pas Zoury mais il vaut mieux oublier la fonction CreateBitmap
pour les bitmap couleur et lui préférer CreateCompatibleBitmap.
Pas de danger ! :O)
J'avais conseiller à Patrice de jeter un oeil sur les fonctions
CreatePatternBrush() et CreateDIBPatternBrushPt(). Il a trouvé
CreateBitmap() tout seul . ;O)
Te fache pas Zoury mais il vaut mieux oublier la fonction CreateBitmap pour les bitmap couleur et lui préférer CreateCompatibleBitmap.
Pas de danger ! :O) J'avais conseiller à Patrice de jeter un oeil sur les fonctions CreatePatternBrush() et CreateDIBPatternBrushPt(). Il a trouvé CreateBitmap() tout seul . ;O)
-- Cordialement Yanick MVP pour Visual Basic
christophe-pasde
Hop!
J'ai pas lu ce que tu écrivais pour Patrice ...
Pour moi c'est CreateDIBPatternBrushPt.
A+
Christophe
Zoury a écrit :
Salut Christophe !
Te fache pas Zoury mais il vaut mieux oublier la fonction CreateBitmap pour les bitmap couleur et lui préférer CreateCompatibleBitmap.
Pas de danger ! :O) J'avais conseiller à Patrice de jeter un oeil sur les fonctions CreatePatternBrush() et CreateDIBPatternBrushPt(). Il a trouvé CreateBitmap() tout seul . ;O)
Hop!
J'ai pas lu ce que tu écrivais pour Patrice ...
Pour moi c'est CreateDIBPatternBrushPt.
A+
Christophe
Zoury a écrit :
Salut Christophe !
Te fache pas Zoury mais il vaut mieux oublier la fonction CreateBitmap
pour les bitmap couleur et lui préférer CreateCompatibleBitmap.
Pas de danger ! :O)
J'avais conseiller à Patrice de jeter un oeil sur les fonctions
CreatePatternBrush() et CreateDIBPatternBrushPt(). Il a trouvé
CreateBitmap() tout seul . ;O)
Te fache pas Zoury mais il vaut mieux oublier la fonction CreateBitmap pour les bitmap couleur et lui préférer CreateCompatibleBitmap.
Pas de danger ! :O) J'avais conseiller à Patrice de jeter un oeil sur les fonctions CreatePatternBrush() et CreateDIBPatternBrushPt(). Il a trouvé CreateBitmap() tout seul . ;O)
christophe-pasde
Bonjour,
En fait si tu manipule la GDI oui.
Il y a plein de fonction qui sont "tronquées" en 98, c'est du au fait que la gdi est en 16 bits sur 98 et en 32 à partir de 2000 (SP3 pour 2000 server).
A+
Christophe
Patrice Henrio a écrit :
Merci de ta réponse. A priori cela signifie que si l'on veut faire quelque chose qui fonctionne aussi bien en 98 qu'en XP, il faut tester le système d'exploitation utilisé et créer deux procédures ?
"christophe-pasde<> @wanadoo.fr>" <"christophe-pasde<> a écrit dans le message de news: 42a9b63d$0$11721$
Re,
Je vais essayer d'être clair:
Une image (ou un bitmap c'est la même chose) est composé d'une sucession de ligne horizontale que l'on appel ligne de balayage.
Le nombre de ces lignes est la hauteur de l'image en pixel. Pour la longueur c'est plus compliqué, on y viendra après.
Chaque ligne est composée de pixel.
Chaque pixel est codé en mémoire sur : 1 bit pour le noir et blanc : donc pour une image noir et blanc, un octet de donnée contient 8 pixel.
4 bit pour 16 couleurs et nuance de gris (un octet = 2 pixel)
8 bit pour les images 256 couleur 1 octet = 1 pixel
24 bit pour les images truecolor: 3 octets= 1 pixel chaque octet contient respectivement la valeur du bleu, du vert, du rouge.
32 ç'est encore plus coton ...
Revenons à la ligne de balayage: elle est alignée sur 32 bit (ou 16 dans ton cas) ce qui veut dire que la longueur en octet de la ligne est un multiple de 4 (ou 2 dans ton cas).
Si pour une image 256 couleur (1 pixel = 1 octet) j'ai une largeur de 11 pixel, la longeur de la ligne en octet sera : 12 octet (là ça marche pour les deux 16 et 32) pour une image noir et blanc de 11 pixel l'image fera 4 octet ou 2 (respect 32 et 16). Car 11 pixel = 11 bit (1 octet + 3 bit ) mais alignement sur 32 donc : 4 octets mini.
Voilà en gros comment ça marche.
Pour ton pb de hachure qui est le même que celui des "pointillés large" fait attention les pinceau définis par l'utilisateur sont: 16 pixel * 16 pixel pour 95 et 98 32 * 32 pour le reste.
A+
Christophe
Bonjour,
En fait si tu manipule la GDI oui.
Il y a plein de fonction qui sont "tronquées" en 98, c'est du au fait
que la gdi est en 16 bits sur 98 et en 32 à partir de 2000 (SP3 pour
2000 server).
A+
Christophe
Patrice Henrio a écrit :
Merci de ta réponse.
A priori cela signifie que si l'on veut faire quelque chose qui fonctionne
aussi bien en 98 qu'en XP, il faut tester le système d'exploitation utilisé
et créer deux procédures ?
"christophe-pasde<> @wanadoo.fr>" <"christophe-pasde<> a écrit dans le
message de news: 42a9b63d$0$11721$8fcfb975@news.wanadoo.fr...
Re,
Je vais essayer d'être clair:
Une image (ou un bitmap c'est la même chose) est composé d'une sucession
de ligne horizontale que l'on appel ligne de balayage.
Le nombre de ces lignes est la hauteur de l'image en pixel.
Pour la longueur c'est plus compliqué, on y viendra après.
Chaque ligne est composée de pixel.
Chaque pixel est codé en mémoire sur :
1 bit pour le noir et blanc : donc pour une image noir et blanc, un octet
de donnée contient 8 pixel.
4 bit pour 16 couleurs et nuance de gris (un octet = 2 pixel)
8 bit pour les images 256 couleur 1 octet = 1 pixel
24 bit pour les images truecolor: 3 octets= 1 pixel chaque octet contient
respectivement la valeur du bleu, du vert, du rouge.
32 ç'est encore plus coton ...
Revenons à la ligne de balayage: elle est alignée sur 32 bit (ou 16 dans
ton cas) ce qui veut dire que la longueur en octet de la ligne est un
multiple de 4 (ou 2 dans ton cas).
Si pour une image 256 couleur (1 pixel = 1 octet) j'ai une largeur de 11
pixel, la longeur de la ligne en octet sera : 12 octet (là ça marche pour
les deux 16 et 32)
pour une image noir et blanc de 11 pixel l'image fera 4 octet ou 2
(respect 32 et 16). Car 11 pixel = 11 bit (1 octet + 3 bit ) mais
alignement sur 32 donc : 4 octets mini.
Voilà en gros comment ça marche.
Pour ton pb de hachure qui est le même que celui des "pointillés large"
fait attention les pinceau définis par l'utilisateur sont:
16 pixel * 16 pixel pour 95 et 98
32 * 32 pour le reste.
Il y a plein de fonction qui sont "tronquées" en 98, c'est du au fait que la gdi est en 16 bits sur 98 et en 32 à partir de 2000 (SP3 pour 2000 server).
A+
Christophe
Patrice Henrio a écrit :
Merci de ta réponse. A priori cela signifie que si l'on veut faire quelque chose qui fonctionne aussi bien en 98 qu'en XP, il faut tester le système d'exploitation utilisé et créer deux procédures ?
"christophe-pasde<> @wanadoo.fr>" <"christophe-pasde<> a écrit dans le message de news: 42a9b63d$0$11721$
Re,
Je vais essayer d'être clair:
Une image (ou un bitmap c'est la même chose) est composé d'une sucession de ligne horizontale que l'on appel ligne de balayage.
Le nombre de ces lignes est la hauteur de l'image en pixel. Pour la longueur c'est plus compliqué, on y viendra après.
Chaque ligne est composée de pixel.
Chaque pixel est codé en mémoire sur : 1 bit pour le noir et blanc : donc pour une image noir et blanc, un octet de donnée contient 8 pixel.
4 bit pour 16 couleurs et nuance de gris (un octet = 2 pixel)
8 bit pour les images 256 couleur 1 octet = 1 pixel
24 bit pour les images truecolor: 3 octets= 1 pixel chaque octet contient respectivement la valeur du bleu, du vert, du rouge.
32 ç'est encore plus coton ...
Revenons à la ligne de balayage: elle est alignée sur 32 bit (ou 16 dans ton cas) ce qui veut dire que la longueur en octet de la ligne est un multiple de 4 (ou 2 dans ton cas).
Si pour une image 256 couleur (1 pixel = 1 octet) j'ai une largeur de 11 pixel, la longeur de la ligne en octet sera : 12 octet (là ça marche pour les deux 16 et 32) pour une image noir et blanc de 11 pixel l'image fera 4 octet ou 2 (respect 32 et 16). Car 11 pixel = 11 bit (1 octet + 3 bit ) mais alignement sur 32 donc : 4 octets mini.
Voilà en gros comment ça marche.
Pour ton pb de hachure qui est le même que celui des "pointillés large" fait attention les pinceau définis par l'utilisateur sont: 16 pixel * 16 pixel pour 95 et 98 32 * 32 pour le reste.