Zoom sur Image et déplacement avec Hscrollbar et Vscrollbar

Signaler
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017
-
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017
-
Bonjour,

Dans un projet VB6, je Zoom une image "au maximum" --> (62438 x 63450)
Comme la taille de l'image affichée est plus grande que l'écran, j'utilise les composants
Hscrollbar et Vsscrollbar pour la déplacer.

Malheureusement, ces deux composants tombent en erreur en raison de la taille de l'image qui dépasse 32767.

Avez vous une solution à me proposer pour corriger ce problème


Par avance Merci.

12 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour,
avec quel code et avec quelle échelle ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Je viens d'essayer en échelle de pixels avec une picturebox portée = environ 400 cms (énorme) de largeur ===>> ma Hscrollbar la déroule en entier.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Voilà un petit test plus "parlant" :
Private Sub Form_Activate()
 Me.ScaleMode = vbPixels
 Picture1.ScaleMode = vbPixels
 Picture1.Width = 16000
 HScroll1.Max = Picture1.Width
 HScroll1.Value = 0
 MsgBox "j'ai donc une image de " & Picture1.Width & " pixels" & vbCrLf & _
 "soit de " & ScaleX(Picture1.ScaleWidth, Me.ScaleMode, vbCentimeters) & " centimètres"
End Sub

Private Sub HScroll1_Change()
  Picture1.Left = -HScroll1.Value
End Sub

Private Sub HScroll1_Scroll()
 HScroll1_Change
End Sub




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Bonjour,

Dans la liste des derniers sujets, pour cette question, j'ai 3 réponses
.
Ou sont ces réponses ?..............................


Merci
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Je viens seulement d'avoir les 3 réponses
Désolé.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Il y a comme un truc, là !




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Je suis en Scalemode = Twip. Là est peut-être mon problème ?

Je développe actuellement un projet compliqué pour moi qui me posait problème avec scalemode = Pixels.
Je suis donc passé en Twip. Tout marche correctement sauf le point que je viens de soulever.

Comme c'est l'heure de la soupe, je reprendrais la discussion demain

Merci encore A+
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
- Etre en twips n'apporte rien de plus à la résolution de ton image, puisque, de toutes manières, le pixel reste la plus petite surface affichable sur ton écran.

- regarde par ailleurs mon petit bout de code test. Que tu sois en échelle de twips ou non, il passe en pixels.

- le problème, en échelle de twips, est tout simplement celui de la limitation d'un Integer. Or, par exemple, tes scrollbars sont limitées à un integer.

Rien ne t'empêche, par ailleurs, de passer en échelle de pixels ici et de revenir en échelle de twips ensuite.

J'ajouterais volontiers ceci, en parlant sous contrôle des VB.Nettistes (qui me corrigeront en cas de besoin) : VB.Net a, lui, complètement abandonné l'échelle de twips, me semble-t-il. Ce n'est pas sans raison.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Bonjour,

J'ai passé toute la matinée et toute l'après midi sur ce problème.

Rien à faire que ce soit en scalemode Pixels ou Twips, les essais réalisés ne sont pas concluants. (J'ai bien entendu utilisé le petit bout de Code)

En Scalemode Twips:
Le zoom maxi s'affiche correctement mais pour le déplacement de l'image, la taille doit être inférieure à 32767.

En Scalemode Pixels,
Le zoom maxi est tronqué et le déplacement est correct

---------------------------------------------------------------------------------------
Mon programme zoom et déplace correctement les images < 32767. Les pixels ont une taille d'un mm. (Impossible de les afficher avec une taille de 2 mm)
----------------------------------------------------------------------------------------

Résumé très simplifié des instructions que j'utilise

Picture1.Picture = LoadPicture("D:\......bmp")
Image1.Picture = LoadPicture("D:\........bmp")

WIDTHINITIAL = Picture1.Width
HEIGHTINITIAL = Picture1.Height

FacteurZoom = 4.5
Image1.Height = HEIGHTINITIAL * FacteurZoom
Image1.Width = WIDTHINITIAL * FacteurZoom
SizeImage Picture1, Image1.Picture, Image1.Width, Image1.Height
HScrollBar1.Max = Picture1.Width - Picture3.Width
VScrollBar1.Max = Picture1.Height - Picture3.Height


Encore Merci.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour,
Résumé et simplifié, sans doute, mais non parlant sans rien savoir de beaucoup de choses .
Le "zoom maxi est tronqué" ne me dit rien : tronqué dans quel contrôle ?
Pas plus que je ne sais quelles instructions contient SizeImage
Je n'ai par ailleurs pas la moindre idée du rôle joué par Picture3 dans ton appli.
J'aimerais par ailleurs voir
- où et comment tu as défini la propriété scalemode de ton Form et de chaque Picturebox
- où et comment tu as typé WIDTHINITIAL , HEIGHTINITIAL et FacteurZoom

Si tu pouvais également m'exposer en quelques mots techniques le mécanisme que tu veux mettre en oeuvre, ce serait mieux (en disant le rôle joué par chacun des éléments utilisés).
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
En essayant de deviner (puisque sans précisions suffisantes), je me dis que tu as peut-être ceci :
Dans Picture1 : l'image à traiter
Dans picture1 : un contrôle Image Image1 qui te servirait à choisir dans picture1 la partie à zoomer
Dans Picture3, le morceau de picture1 ainsi zoomé
Des scrollbars pour faire défiler Picture1

Esr-ce celà ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
330
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
26 octobre 2017

Désolé, j'ai oublié de mettre

Private Sub SizeImage(Picture As PictureBox, ImageSize As Picture, WidthImage As Single, HeightImage As Single)
Picture.Picture = LoadPicture("")
Picture.Width = WidthImage
Picture.Height = HeightImage
Picture.PaintPicture ImageSize, 0, 0, WidthImage, HeightImage
Picture.Refresh


'---------------------------------------------------------------------------------

En ajoutant ce bout de code, je voulais simplement préciser le type d'instructions que j'utilise dans ce projet. Pour être précis je devrais présenter les variables, les composants et les procédures. Trop compliqué dans un Forum

Techniquement ce projet permet de modifier des Images:
Incorporer tu texte des morceaux d'images, de les tronquer, de les zoomer, de faire des captures partielles, de remplacer plusieurs couleurs par une autre couleur et surtout de générer des instructions VB6 pour exploiter les images modifiées dans d'autre projets. (Cet outil m'a servi à réaliser deux logiciels éducatifs, un sur le monde, les pays, la population et un autre sur le squelette Humain.)

Comme j'ai déjà passé beaucoup de temps avec votre aide, je pense qu'il est préférable d'en
rester là en raison de l'incapacité que j'ai à améliorer cette partie du programme.

Encore merci