redimension d'image de picture box+ resolution + taille ecran

Le
latouffe59
Bonjour,

vous connaissez tous les mires d'optitiens! Eh bien en fonction de la
distance on change la taille des images, qui sont toutes carrées.

à1m >coté de 1.46cm ; 2m > 2.92cm ;ect

1-J'ai un logiciel qui fait défiler ces images. En fonction des
options il faudrait que la taille soit modifier et étant contenue
dans une picturebox je ne sais pas trop quel fonction utiliser?! ( on
m'a parlé de stretchBlt masi c'est compliqué!!)

2-De plus il faut que cette image soit adaptable a plusieurs type
d'écran (taille 15' 17' et 19' au minimum) et à toutes les
résolutions.
Comment faire ce dernier point?
>Faut il calculer les valeur des cotés en pixel pour simplifier le redime=
nsionnement en fonction de la résolution?
>Comment faire pour que quel que soit la taille de l'écran l'image vue re=
ste à la même taille (réelle mesuré avec une regle par exemple) ?


je vous remerci d'avance car j'ai beau avoir cheché je trouve pas de
solution
Latouffe59
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LE TROLL
Le #15407131
Bonjour,

Tiens, un exemple pour changer la taille:

Dim taux As Single
Dim taux1 As Double
Dim taux2 As Double
'
On Error GoTo erreur
taux1 = 1
taux2 = 1
Picture2.Picture = LoadPicture(path)
taux1 = 1 / Picture2.Height * 10000
taux2 = 1 / Picture2.Height * 15000
If taux1 = taux2 Then taux = taux1
If taux1 < taux2 Then taux = taux1
If taux1 > taux2 Then taux = taux2
taux = Round(taux, 2)
If taux > 1 Then taux = 1
Picture1.Picture = LoadPicture()
Picture1.PaintPicture Picture2, 0, 0, Picture2.Width * taux,
Picture2.Height * taux
---fin---


Pour ta seconde question, ça a été évoqué il y a peu:
qustion

problème d'échelle - jacqueline hardy - 05/05/2007 à 13h24



--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------

Bonjour,

vous connaissez tous les mires d'optitiens! Eh bien en fonction de la
distance on change la taille des images, qui sont toutes carrées.

à1m >coté de 1.46cm ; 2m > 2.92cm ;ect ......

1-J'ai un logiciel qui fait défiler ces images. En fonction des
options il faudrait que la taille soit modifier et étant contenue
dans une picturebox je ne sais pas trop quel fonction utiliser?! ( on
m'a parlé de stretchBlt masi c'est compliqué!!)

2-De plus il faut que cette image soit adaptable a plusieurs type
d'écran (taille 15' 17' et 19' au minimum) et à toutes les
résolutions.
Comment faire ce dernier point?
Faut il calculer les valeur des cotés en pixel pour simplifier le
redimensionnement en fonction de la résolution?
Comment faire pour que quel que soit la taille de l'écran l'image vue reste
à la même taille (réelle mesuré avec une regle par exemple) ?




je vous remerci d'avance car j'ai beau avoir cheché je trouve pas de
solution......
Latouffe59
Patrice Henrio
Le #15407101
"LE TROLL" %23TDIL9%
Bonjour,

Tiens, un exemple pour changer la taille:

Dim taux As Single
Dim taux1 As Double
Dim taux2 As Double
'
On Error GoTo erreur
taux1 = 1
taux2 = 1
Picture2.Picture = LoadPicture(path)
taux1 = 1 / Picture2.Height * 10000
taux2 = 1 / Picture2.Height * 15000
If taux1 = taux2 Then taux = taux1
If taux1 < taux2 Then taux = taux1
If taux1 > taux2 Then taux = taux2
taux = Round(taux, 2)
If taux > 1 Then taux = 1
Picture1.Picture = LoadPicture()
Picture1.PaintPicture Picture2, 0, 0, Picture2.Width * taux,
Picture2.Height * taux
---fin---




Dans ce programme
Taux1=1 et Taux2=1 sont inutiles car on leur affecte une valeur deux lignes
en dessous

taux2 = 1 / Picture2.Height * 15000 est exactement la même chose que
taux2=1,5 *taux1
donc les trois "if" suivants sont parfaitement inutiles car seul le deuxième
donne une valeur de prédicat Vrai et donc taux vaut taux1, puis sa valeur
arrondie à deux chiffres après al virgule ce qui ne sert à rien car les
propriété width et height demandent des entiers et transforment
systématiquement la valeur affectée en long.

Voici l'aide de VB sur PaintPicture
PaintPicture, méthode

Dessine le contenu d'un fichier graphique (.bmp, .wmf, .emf, .cur, .ico ou
.dib) sur un objet Form, PictureBox ou Printer. Ne gère pas les arguments
nommés.
Syntaxe
object.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2,
height2, opcode
La syntaxe de la méthode PaintPicture comprend les éléments suivants :
object, Facultatif.Expression d'objet qui prend la valeur d'un objet
figurant dans la rubrique Application. Si l'élément object est omis, l'objet
Form qui a le focus est considéré comme object.
pictureSource du graphique à dessiner sur object. Doit correspondre à la
propriété Picture d'un objet Form ou PictureBox.
x1, y1 Valeurs en simple précision indiquant les coordonnées de destination
(axes x et y) sur l'élément object pour l'argument picture à dessiner. La
propriété ScaleMode de l'élément object détermine l'unité de mesure à
utiliser.
width1, Facultatif. Valeur en simple précision indiquant la largeur de
destination de picture. La propriété ScaleMode de l'élément object détermine
l'unité de mesure à utiliser. Si la largeur de destination est supérieure ou
inférieure à la largeur source (width2), l'argument picture est élargi ou
rétréci en conséquence. Si cet élément est omis, la largeur source est
utilisée.
height1, Facultatif. Valeur en simple précision indiquant la hauteur de
destination de picture. La propriété ScaleMode de l'élément object détermine
l'unité de mesure à utiliser. Si la hauteur de destination est supérieure ou
inférieure à la hauteur source (height2), l'argument picture est élargi ou
rétréci en conséquence. Si cet élément est omis, la hauteur source est
utilisée.
x2, y2 Facultatif. Valeurs en simple précision indiquant les coordonnées
(axes x et y) d'une zone de coupure à l'intérieur de l'argument picture. La
propriété ScaleMode de object détermine l'unité de mesure à utiliser. Si cet
élément est omis, la valeur par défaut est 0.
width2 Facultatif. Valeur en simple précision indiquant la largeur source
d'une zone de coupure à l'intérieur de l'argument picture. La propriété
ScaleMode de object détermine l'unité de mesure à utiliser. Si cet élément
est omis, la totalité de la largeur source est utilisée.
Heightt2 Facultatif. Valeur en simple précision indiquant la hauteur source
d'une zone de coupure à l'intérieur de l'argument picture. La propriété
ScaleMode de object détermine l'unité de mesure à utiliser. Si cet élément
est omis, la totalité de la hauteur source est utilisée.
opcode Facultatif. Valeur de type Long ou code utilisé uniquement avec les
images bitmap. Définit une opération au niveau du bit (par exemple, la
constante vbMergeCopy ou vbSrcAnd) qui est exécutée sur l'argument picture à
mesure qu'il est dessiné sur object. La liste complète des opérateurs au
niveau du bit figure dans la rubrique RasterOp, constantes de l'aide de
Visual Basic.
Il existe des limitations à l'utilisation des opcodes. Par exemple, vous ne
pouvez pas utiliser un opcode autre que vbSrcCopy si la source est une icône
ou un métafichier, et les opcodes qui interagissent avec le motif (ou «
brosse », en termes SDK) comme MERGECOPY, PATCOPY, PATPAINT et PATINVERT
interagissent en fait avec la propriété FillStyle de la destination.
Note Opcode est utilisé pour passer une opération au niveau du bit sur un
bitmap. Placer une valeur dans cet argument lors du passage d'autres types
d'images cause une erreur « Argument ou appel de procédure incorrect ». Ceci
est voulu. Pour éviter cette erreur, laissez l'argument Opcode à blanc pour
toute autre image d'un bitmap.


Remarques
Vous pouvez retourner une image bitmap horizontalement ou verticalement en
attribuant des valeurs négatives à la hauteur de destination (height1) et/ou
à la largeur de destination (width1).
Vous pouvez omettre toutargument facultatif situé en fin de syntaxe. Si vous
omettez un ou plusieurs arguments facultatifs en fin de syntaxe, n'indiquez
pas de virgule après le dernier argument utilisé. Pour définir un argument
facultatif, vous devez préciser tous les arguments facultatifs qui le
précèdent dans lasyntaxe.
Notez qu'il existe une différence entre le chargement d'un .Bmp dans un
contrôle PictureBox et l'utilisation de la fonction API Windows BitBlt()
pour ajouter une image à ce contrôle. Lorsque vous utilisez BitBlt pour
afficher une image, le contrôle PictureBox ne sait pas comment la
redimmensionner comme il le fait avec la méthode LoadPicture. L'affectation
de la taille de l'image aux propriétés ScaleWidth et ScaleHeight ne
fonctionne pas. Si vous voulez que le contrôle PictureBox prenne la taille
de la nouvelle image après l'emploi de BitBlt, vous devez le traiter
manuellement par code, en convertissant les unités et en gérant les
bordures. Voici un exemple ci-dessous :
Sub RedimPictureBoxPourImage(pic as PictureBox, twipWd _
as Integer, twipHt as Integer)
' Ce code suppose que toutes les unités sont en twips.
' Si ce n'est pas le cas, effectuez la conversion
' en twips avant d'appeler cette routine.
' Il suppose aussi que l'image a été placée en 0,0
Dim BorderHt as Integer, BorderWd as Integer
BorderWd = Pic.Width - Pic.ScaleWidth
BorderHt = Pic.Height - Pic.ScaleHeight
pic.Move pic.Left, pic.Top, twipWd + BorderWd, _
twipHt + BorderHt
End Sub
LE TROLL
Le #15407041
Bonjour,

Merci, mais j'ai fait un copier/coller de mon pense-bête sans le
vérifier, c'était juste pour donner un exemple de changement de taille...

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Patrice Henrio" news: %23I93jN$

"LE TROLL" %23TDIL9%
Bonjour,

Tiens, un exemple pour changer la taille:

Dim taux As Single
Dim taux1 As Double
Dim taux2 As Double
'
On Error GoTo erreur
taux1 = 1
taux2 = 1
Picture2.Picture = LoadPicture(path)
taux1 = 1 / Picture2.Height * 10000
taux2 = 1 / Picture2.Height * 15000
If taux1 = taux2 Then taux = taux1
If taux1 < taux2 Then taux = taux1
If taux1 > taux2 Then taux = taux2
taux = Round(taux, 2)
If taux > 1 Then taux = 1
Picture1.Picture = LoadPicture()
Picture1.PaintPicture Picture2, 0, 0, Picture2.Width * taux,
Picture2.Height * taux
---fin---




Dans ce programme
Taux1=1 et Taux2=1 sont inutiles car on leur affecte une valeur deux
lignes en dessous

taux2 = 1 / Picture2.Height * 15000 est exactement la même chose que
taux2=1,5 *taux1
donc les trois "if" suivants sont parfaitement inutiles car seul le
deuxième donne une valeur de prédicat Vrai et donc taux vaut taux1, puis
sa valeur arrondie à deux chiffres après al virgule ce qui ne sert à rien
car les propriété width et height demandent des entiers et transforment
systématiquement la valeur affectée en long.

Voici l'aide de VB sur PaintPicture
PaintPicture, méthode

Dessine le contenu d'un fichier graphique (.bmp, .wmf, .emf, .cur, .ico ou
.dib) sur un objet Form, PictureBox ou Printer. Ne gère pas les arguments
nommés.
Syntaxe
object.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2,
height2, opcode
La syntaxe de la méthode PaintPicture comprend les éléments suivants :
object, Facultatif.Expression d'objet qui prend la valeur d'un objet
figurant dans la rubrique Application. Si l'élément object est omis,
l'objet Form qui a le focus est considéré comme object.
pictureSource du graphique à dessiner sur object. Doit correspondre à la
propriété Picture d'un objet Form ou PictureBox.
x1, y1 Valeurs en simple précision indiquant les coordonnées de
destination (axes x et y) sur l'élément object pour l'argument picture à
dessiner. La propriété ScaleMode de l'élément object détermine l'unité de
mesure à utiliser.
width1, Facultatif. Valeur en simple précision indiquant la largeur de
destination de picture. La propriété ScaleMode de l'élément object
détermine l'unité de mesure à utiliser. Si la largeur de destination est
supérieure ou inférieure à la largeur source (width2), l'argument picture
est élargi ou rétréci en conséquence. Si cet élément est omis, la largeur
source est utilisée.
height1, Facultatif. Valeur en simple précision indiquant la hauteur de
destination de picture. La propriété ScaleMode de l'élément object
détermine l'unité de mesure à utiliser. Si la hauteur de destination est
supérieure ou inférieure à la hauteur source (height2), l'argument picture
est élargi ou rétréci en conséquence. Si cet élément est omis, la hauteur
source est utilisée.
x2, y2 Facultatif. Valeurs en simple précision indiquant les coordonnées
(axes x et y) d'une zone de coupure à l'intérieur de l'argument picture.
La propriété ScaleMode de object détermine l'unité de mesure à utiliser.
Si cet élément est omis, la valeur par défaut est 0.
width2 Facultatif. Valeur en simple précision indiquant la largeur source
d'une zone de coupure à l'intérieur de l'argument picture. La propriété
ScaleMode de object détermine l'unité de mesure à utiliser. Si cet élément
est omis, la totalité de la largeur source est utilisée.
Heightt2 Facultatif. Valeur en simple précision indiquant la hauteur
source d'une zone de coupure à l'intérieur de l'argument picture. La
propriété ScaleMode de object détermine l'unité de mesure à utiliser. Si
cet élément est omis, la totalité de la hauteur source est utilisée.
opcode Facultatif. Valeur de type Long ou code utilisé uniquement avec les
images bitmap. Définit une opération au niveau du bit (par exemple, la
constante vbMergeCopy ou vbSrcAnd) qui est exécutée sur l'argument picture
à mesure qu'il est dessiné sur object. La liste complète des opérateurs au
niveau du bit figure dans la rubrique RasterOp, constantes de l'aide de
Visual Basic.
Il existe des limitations à l'utilisation des opcodes. Par exemple, vous
ne pouvez pas utiliser un opcode autre que vbSrcCopy si la source est une
icône ou un métafichier, et les opcodes qui interagissent avec le motif
(ou « brosse », en termes SDK) comme MERGECOPY, PATCOPY, PATPAINT et
PATINVERT interagissent en fait avec la propriété FillStyle de la
destination.
Note Opcode est utilisé pour passer une opération au niveau du bit sur
un bitmap. Placer une valeur dans cet argument lors du passage d'autres
types d'images cause une erreur « Argument ou appel de procédure
incorrect ». Ceci est voulu. Pour éviter cette erreur, laissez l'argument
Opcode à blanc pour toute autre image d'un bitmap.


Remarques
Vous pouvez retourner une image bitmap horizontalement ou verticalement en
attribuant des valeurs négatives à la hauteur de destination (height1)
et/ou à la largeur de destination (width1).
Vous pouvez omettre toutargument facultatif situé en fin de syntaxe. Si
vous omettez un ou plusieurs arguments facultatifs en fin de syntaxe,
n'indiquez pas de virgule après le dernier argument utilisé. Pour définir
un argument facultatif, vous devez préciser tous les arguments facultatifs
qui le précèdent dans lasyntaxe.
Notez qu'il existe une différence entre le chargement d'un .Bmp dans un
contrôle PictureBox et l'utilisation de la fonction API Windows BitBlt()
pour ajouter une image à ce contrôle. Lorsque vous utilisez BitBlt pour
afficher une image, le contrôle PictureBox ne sait pas comment la
redimmensionner comme il le fait avec la méthode LoadPicture.
L'affectation de la taille de l'image aux propriétés ScaleWidth et
ScaleHeight ne fonctionne pas. Si vous voulez que le contrôle PictureBox
prenne la taille de la nouvelle image après l'emploi de BitBlt, vous devez
le traiter manuellement par code, en convertissant les unités et en gérant
les bordures. Voici un exemple ci-dessous :
Sub RedimPictureBoxPourImage(pic as PictureBox, twipWd _
as Integer, twipHt as Integer)
' Ce code suppose que toutes les unités sont en twips.
' Si ce n'est pas le cas, effectuez la conversion
' en twips avant d'appeler cette routine.
' Il suppose aussi que l'image a été placée en 0,0
Dim BorderHt as Integer, BorderWd as Integer
BorderWd = Pic.Width - Pic.ScaleWidth
BorderHt = Pic.Height - Pic.ScaleHeight
pic.Move pic.Left, pic.Top, twipWd + BorderWd, _
twipHt + BorderHt
End Sub



latouffe59
Le #15406831
Bonjour,

Ce que j'ai compris de l'intêret de l'utilisation de paintpicture
c'est :

-Donné un width1 et un heigth1 en tant que variable
-attribuer à chaque valeur de la distance, du patient, un width1 et
heigth1 spécifique
-lancer la fonction paintpicture avec pour "picture" une lettre


J'ai décider de forcer la résolution masi je ne peut pas forcer la
taille de l'écran( dommage d'ailleurs ;) ):
Avec quelle valeur dois-je travailler à votre avis avant de passer en c m?En Twip ou en pixel ?



Pixel > je devrais calculer chaque taille de un pixel pour chaque
taille d'écran
Twip> je devrais calculer le nombre de twip pour chaque taille
d'écran

Si vous pouvez me renseigner sur votre avis et votre manière de faire!


Question subsidiare:
Comment changer par le code la valeur de la "qualité de couleur" et aus si la valeur du zoom(un peu un truc de taré la!)



Merci d'avance de vos réponses
Latouffe59
latouffe59
Le #15406701
oubliez le message précédent j'ai trouver une alternative à mon
probleme!!

Mais du coup je voulais savoir comment tracer un retcangle
400pixel*300pixel (et non 400twip*300twip)
avec shape si possible mais sinon avec une picturebox de ces dimansion
là!!


Je remet quand même ces questions au cas ou...
>Comment changer par le code la valeur de la "qualité de couleur" et a ussi la valeur du zoom(un peu un truc de taré la!)??????




Merci d'avance de vos réponses
Latouffe59
latouffe59
Le #15406671
C'et bon j'ai répondu oi-meme à ma question !!
J'avais oublier que c'était dans la form qu'il fallait imposé le
scalemode=3 ...


Sinon toujours personne pour :
>Comment changer par le code la valeur de la "qualité de couleur"? (32 bit,16bit, ect)



Latouffe59
Publicité
Poster une réponse
Anonyme