OVH Cloud OVH Cloud

polygone coloré

8 réponses
Avatar
driss hanib
Bonjour à tous,

je voudrai dessiner sur un picture box (print preview) ou sur l'imprimante
un polygone, par exemple un triangle.
Bien sur je peux utiliser la commande printer.line pour fair ce triangle,
mais le problème est que je peux pas colorer le fond du triangle créé.
Comment faire, plus généralement des polygones dont le fond est coloré.
Il me semble qu'il doit y avoir des API permettant de dessiner des
polygones....
Qu'en est-il ? peut-on colorer le fond ?

merci pour vos pistes ..

Driss

8 réponses

Avatar
LE TROLL
Bonjour,

A tout hasard, j'ai ceci pour colorer les figures fermées:

REMPLISSAGE D'UN DESSIN FERME
FillStyle = x
1 defaut (transparent)
0 rempli (figure fermée) par FillColor
FillColor = couleur (si FillStyle = 0)

Est-ce ça que tu veux ???

--
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"driss hanib" a écrit dans le message de news:

Bonjour à tous,

je voudrai dessiner sur un picture box (print preview) ou sur l'imprimante
un polygone, par exemple un triangle.
Bien sur je peux utiliser la commande printer.line pour fair ce triangle,
mais le problème est que je peux pas colorer le fond du triangle créé.
Comment faire, plus généralement des polygones dont le fond est coloré.
Il me semble qu'il doit y avoir des API permettant de dessiner des
polygones....
Qu'en est-il ? peut-on colorer le fond ?

merci pour vos pistes ..

Driss



Avatar
Jacques93
Bonjour driss hanib,
driss hanib a écrit :
Bonjour à tous,

je voudrai dessiner sur un picture box (print preview) ou sur l'imprimante
un polygone, par exemple un triangle.
Bien sur je peux utiliser la commande printer.line pour fair ce triangle,
mais le problème est que je peux pas colorer le fond du triangle créé.
Comment faire, plus généralement des polygones dont le fond est coloré.
Il me semble qu'il doit y avoir des API permettant de dessiner des
polygones....
Qu'en est-il ? peut-on colorer le fond ?



L'API ExtFloodFill devrait faire l'affaire, quelque soit la forme de la
surface à colorer :

<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_7yb0.asp>

Un exemple ici :

<http://vb.mvps.org/samples/project.asp?id=flood>

--
Cordialement,

Jacques.
Avatar
Driss HANIB
merci Jacques,

cela semble en effet intéressant.
en fait j'ai fait une sub qui créee un cadre avec bords arrondis et je veux
effectivement mettre une coloration, voire un motif dans le fond.

D'ailleurs n'y a-t-il pas là aussi une API pour fair un cadre arrondi ?
J'essaie de comprendre l'exemple dont tu m'a fourni l'adresse.

Merci encore
Driss
"Jacques93" a écrit dans le message de
news:
Bonjour driss hanib,
driss hanib a écrit :
> Bonjour à tous,
>
> je voudrai dessiner sur un picture box (print preview) ou sur


l'imprimante
> un polygone, par exemple un triangle.
> Bien sur je peux utiliser la commande printer.line pour fair ce


triangle,
> mais le problème est que je peux pas colorer le fond du triangle créé.
> Comment faire, plus généralement des polygones dont le fond est coloré.
> Il me semble qu'il doit y avoir des API permettant de dessiner des
> polygones....
> Qu'en est-il ? peut-on colorer le fond ?

L'API ExtFloodFill devrait faire l'affaire, quelque soit la forme de la
surface à colorer :




<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmap
s_7yb0.asp>

Un exemple ici :

<http://vb.mvps.org/samples/project.asp?id=flood>

--
Cordialement,

Jacques.


Avatar
Vincent Guichard
Driss HANIB a écrit :
D'ailleurs n'y a-t-il pas là aussi une API pour fair un cadre arrondi ?



CreateRoundRectRgn peut-être? le problème étant que ça travaille avec
des régions.
Vincent Guichard
Avatar
Jacques93
Bonjour Driss HANIB,
Driss HANIB a écrit :
D'ailleurs n'y a-t-il pas là aussi une API pour fair un cadre arrondi ?
J'essaie de comprendre l'exemple dont tu m'a fourni l'adresse.



Peut être ceci :

http://windowssdk.msdn.microsoft.com/en-us/library/ms533898.aspx

--
Cordialement,

Jacques.
Avatar
François Picalausa
Hello,

Les API windows le permettent directement en effet.

Par exemple, pour polygon la fonction Polygon
(http://msdn.microsoft.com/library/en-us/gdi/fillshap_0u26.asp):
The polygon is outlined by using the current pen and filled by using
the current brush and polygon fill mode.

Voici un exemple (écrit sans VB donc sans garantie d'exactitude):
'Sur une form
Private Type POINTAPI
X As Long
Y As Long
End Type

Private Declare Function DeleteObject _
Lib "gdi32" _
( _
ByVal hObject As Long _
) _
As Long

Private Declare Function CreateSolidBrush _
Lib "gdi32" _
( _
ByVal crColor As Long _
) _
As Long

Private Declare Function SelectObject _
Lib "gdi32" _
( _
ByVal hdc As Long, _
ByVal hObject As Long _
) _
As Long

Private Declare Function Polygon _
Lib "gdi32" _
( _
ByVal hdc As Long, _
lpPoint As POINTAPI, _
ByVal nCount As Long _
) _
As Long

Private Sub Form_Paint()
Dim Brush As Long
Dim OldBrush As Long
Dim Points(2) As POINTAPI

'Initialise le polygone (pixels)
Points(0).X = 0
Points(0).Y = 0

Points(1).X = 100
Points(1).Y = 0

Points(2).X = 50
Points(2).Y = Sqr(10000 - 2500)

'Indique d'utiliser notre brosse
Brush = CreateSolidBrush(vbRed)
OldBrush = SelectObject(Me.hdc, Brush)

'Trace le polygone
Polygon Me.hdc, Points(0), 3
'Nécessite peut-être un Me.Refresh... plus sûr

'Restaure le DC dans l'état dans lequel on l'a trouvé
SelectObject Me.hdc, OldBrush
DeleteObject Brush
End Sub

François Picalausa

driss hanib a écrit :

Bonjour à tous,

je voudrai dessiner sur un picture box (print preview) ou sur l'imprimante
un polygone, par exemple un triangle.
Bien sur je peux utiliser la commande printer.line pour fair ce triangle,
mais le problème est que je peux pas colorer le fond du triangle cré é.
Comment faire, plus généralement des polygones dont le fond est color é.
Il me semble qu'il doit y avoir des API permettant de dessiner des
polygones....
Qu'en est-il ? peut-on colorer le fond ?

merci pour vos pistes ..

Driss


Avatar
Driss HANIB
merci jacques,

je regarde cela

Driss

"Jacques93" a écrit dans le message de
news:
Bonjour Driss HANIB,
Driss HANIB a écrit :
> D'ailleurs n'y a-t-il pas là aussi une API pour fair un cadre arrondi ?
> J'essaie de comprendre l'exemple dont tu m'a fourni l'adresse.

Peut être ceci :

http://windowssdk.msdn.microsoft.com/en-us/library/ms533898.aspx

--
Cordialement,

Jacques.


Avatar
Driss HANIB
merci François,

je regarde cela

Driss
"François Picalausa" a écrit dans le message de
news:
Hello,

Les API windows le permettent directement en effet.

Par exemple, pour polygon la fonction Polygon
(http://msdn.microsoft.com/library/en-us/gdi/fillshap_0u26.asp):
The polygon is outlined by using the current pen and filled by using
the current brush and polygon fill mode.

Voici un exemple (écrit sans VB donc sans garantie d'exactitude):
'Sur une form
Private Type POINTAPI
X As Long
Y As Long
End Type

Private Declare Function DeleteObject _
Lib "gdi32" _
( _
ByVal hObject As Long _
) _
As Long

Private Declare Function CreateSolidBrush _
Lib "gdi32" _
( _
ByVal crColor As Long _
) _
As Long

Private Declare Function SelectObject _
Lib "gdi32" _
( _
ByVal hdc As Long, _
ByVal hObject As Long _
) _
As Long

Private Declare Function Polygon _
Lib "gdi32" _
( _
ByVal hdc As Long, _
lpPoint As POINTAPI, _
ByVal nCount As Long _
) _
As Long

Private Sub Form_Paint()
Dim Brush As Long
Dim OldBrush As Long
Dim Points(2) As POINTAPI

'Initialise le polygone (pixels)
Points(0).X = 0
Points(0).Y = 0

Points(1).X = 100
Points(1).Y = 0

Points(2).X = 50
Points(2).Y = Sqr(10000 - 2500)

'Indique d'utiliser notre brosse
Brush = CreateSolidBrush(vbRed)
OldBrush = SelectObject(Me.hdc, Brush)

'Trace le polygone
Polygon Me.hdc, Points(0), 3
'Nécessite peut-être un Me.Refresh... plus sûr

'Restaure le DC dans l'état dans lequel on l'a trouvé
SelectObject Me.hdc, OldBrush
DeleteObject Brush
End Sub

François Picalausa

driss hanib a écrit :

Bonjour à tous,

je voudrai dessiner sur un picture box (print preview) ou sur l'imprimante
un polygone, par exemple un triangle.
Bien sur je peux utiliser la commande printer.line pour fair ce triangle,
mais le problème est que je peux pas colorer le fond du triangle créé.
Comment faire, plus généralement des polygones dont le fond est coloré.
Il me semble qu'il doit y avoir des API permettant de dessiner des
polygones....
Qu'en est-il ? peut-on colorer le fond ?

merci pour vos pistes ..

Driss