Foromus | #1 Posté le 22/12/2016 à 18:42:03 |
---|
| Bonjour,
Tout est dans le titre. J'ai quand même remarqué que lorsque j'affiche une image (photo) dans un projet Gambas, la qualité n'est pas vraiment au top. Bien entendu, je ne vais pas comparer avec visualiseur, même celui par défaut (Ristretto). Et encore moins Geeqie... Mais je suppose qu'il n'y a pas grand chose à faire.
|
gambix | #2 Posté le 22/12/2016 à 19:38:27 |
---|
Faire simple ! | bien il faudrait que je vois ton code pour ça :-) Moins de texte dans une signature c'est agrandir son espace. |
Foromus | #3 Posté le 23/12/2016 à 14:01:57 |
---|
| Bonjour,
Le code (réduit) :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| PUBLIC Conteur AS INTEGER
PUBLIC SUB Form_Open()
ME.Height = Desktop.Height ME.Width = Desktop.Width pnSupport.Height = pnSupport.Width - 50 pnSupport.Width = pnSupport.Height * 1.35 pnSupport.X = (FMain.Width - pnSupport.Width) / 2 pnSupport.Y = (FMain.Height - pnSupport.Height) / 2 ' Si je mets : picFoto.Height = pnSupport.Height - 10 picFoto.Width = pnSupport.Width - 10 picFoto.X = 5 picFoto.Y = 5 picFoto.Stretch = FALSE ' picFoto.Stretch = True Conteur = 1 Affiche END PUBLIC SUB Affiche() ' Dim N As Integer ' For N = 1 To 5 ' picFoto.Picture = New Picture ' picFoto.Refresh picFoto.Picture = Picture[Application.Path & "/Anex/Photos/Foto" & (100 + Conteur) & ".jpg"] ' Wait 2 ' Next END
PUBLIC SUB Button1_Click()
ME.Close QUIT
END
PUBLIC SUB Button2_Click()
Conteur += 1 IF Conteur > 25 THEN Conteur = 1 Affiche
END
|
Au fond, je pense avoir trouvé, c'est tout simplement qu'avec la propriété stretch, les images sont beaucoup trop agrandies (les images de base font 990x732). Après, je me pose la question : comment font les visionneur quand on passe à "plein écran" ? J'ai vu, pour Geeqie, qu'il était question de deux passes et de je ne sais plus quoi. Simplement, si j'ai porté ici le code, c'est juste pour voir si il y a une amélioration possible, sinon, je m'en passerai.
J'ai aussi tenté un affichage automatique avec un wait, mais ça plante complètement. Si je veux faire, je prendrai un Timer (Pas d'urgence pour la réponse, merci !) |
gambix | #4 Posté le 23/12/2016 à 15:35:19 |
---|
Faire simple ! | Dis moi dans la logithèque, il y a un projet Nommé Photo Touch. Tu peux me dire si quand tu affiche des image avec ce petit utilitaire tu a le même problème ?
Je crois que le soucis en faite c'est que le propriété Stretch de Picture Box ne respecte pas la proportionnalité. Elle se contente d'étirer l'image.
Pour garder les proportion il faut appliquer un ratio qui dépent du rapport a la longueur la plus importante du contenu a celle la moins importante du conteneur. J'en ai pas mal fait en travaillant sur gb.report.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
| PUBLIC SUB _Paint(Page AS INTEGER, X AS FLOAT, Y AS FLOAT, hControl AS TControl, DataIndex AS INTEGER) DIM ix, iy AS FLOAT 'Dim hBrush As PaintBrush DIM hPic AS Image DIM w, h AS FLOAT ix = x + hControl.RealLeft '+ Me.Report._ToPixels(Me.Padding._Left) iy = y + hControl.RealTop '+ Me.Report._ToPixels(Me.Padding._Top) IF NOT $hpic THEN RAISE Data(DataIndex) hpic = Data IF NOT hPic THEN RETURN ELSE hPic = $hpic ENDIF Paint.Save Paint.Rectangle(ix, iy, hControl.RealWidth, hControl.RealHeight) Paint.Clip '$hPic = $hPic.Stretch(hControl.RealWidth, hControl.RealHeight) 'hBrush = Paint.Image(hpic) IF ME.Stretch = Report.Fill THEN iX += ME.Report._ToPixels(ME.Padding._Left + ME.Border._Left) iY += ME.Report._ToPixels(ME.Padding._Top + ME.Border._Top) w = (hControl.RealWidth - ME.Report._ToPixels(ME.Padding._Left + ME.Padding._Right + ME.Border._Left + ME.Border._Right)) h = (hControl.RealHeight - ME.Report._ToPixels(ME.Padding._Top + ME.Padding._Bottom + ME.Border._Top + ME.Border._Bottom))
Paint.DrawImage(hpic, ix, iy, w, h - 1) ELSE IF $iStretchMode = Report.Proportional THEN 'on détermine la partie prédominante IF hpic.Width >= hpic.Height 'C'est la largeur 'on détermine une hauteur en fonction de la largeur connue w = hControl.RealWidth - ME.Report._ToPixels(ME.Padding._Width) h = hPic.H / hpic.W * w 'si h> a la place disponible alors on adapte en fonction de h en faite IF h > (hControl.RealHeight - ME.Report._ToPixels(ME.Padding._Height)) THEN h = (hControl.RealHeight - ME.Report._ToPixels(ME.Padding._Height)) w = hpic.w / hpic.H * h ENDIF ELSE 'C'est la hauteur h = (hControl.RealHeight - ME.Report._ToPixels(ME.Padding._Height)) w = hpic.w / hpic.H * h 'si w> la place disponible alors on adapte en fonction de w en faite IF w > (hControl.RealWidth - ME.Report._ToPixels(ME.Padding._Width)) THEN w = hControl.RealWidth - ME.Report._ToPixels(ME.Padding._Width) h = hPic.H / hpic.W * w ENDIF ENDIF ELSE w = hpic.Width h = hpic.H ENDIF SELECT CASE $iAlignment CASE Align.Normal, Align.TopLeft, Align.Left, Align.BottomLeft 'Gauche ix += ME.Report._ToPixels(ME.Padding._Left) CASE Align.Bottom, Align.Center, Align.Top 'centrée ix += (hControl.RealWidth - w) / 2 CASE Align.TopRight, Align.Right, Align.BottomRight 'Droite ix += hControl.RealWidth - ME.Report._ToPixels(ME.Padding._Right) - w END SELECT SELECT CASE $iAlignment CASE Align.TopLeft, Align.Top, Align.TopRight 'Haut iy += ME.Report._ToPixels(ME.Padding._Top) CASE Align.Left, Align.Center, Align.Right 'Milieu iy += (hControl.RealHeight - h) / 2 CASE Align.BottomLeft, Align.Bottom, Align.BottomRight iY += hControl.RealHeight - ME.Report._ToPixels(ME.Padding._Bottom) - h END SELECT
Paint.DrawImage(hpic, ix, iy, w, h - 1) ENDIF Paint.Fill Paint.Restore END
|
Moins de texte dans une signature c'est agrandir son espace. |
Foromus | #5 Posté le 23/12/2016 à 17:39:56 |
---|
| Gambix,
Pas trouvé Photo Touch, ni dans la logithèque, ni même dans Synaptic (xubuntu). Effectivement, il y a un meilleur rendu quand stretch n'est pas activé. Mais la résolution de l'image y est aussi pour beaucoup. Bon, ne vous cassez pas la tête avec ça, il est possible que dans quelques mois, la propriété sera nettement améliorée, pour le moment, je vais faire en sorte de proposer les deux affichages, juste une variable à mettre en plus, ce n'est pas bien long. Ma question était plutôt de savoir si mon code n'était pas insuffisant (inadéquat, ça aurait planté), et éventuellement, une solution simple, sous forme de commande à ajouter par exemple. Sauf besoin général pour la communauté, ne vous mettez pas en peine, je vais faire avec ce que j'ai. Pour le code ci-joint, je vais voir en janvier si je peux expérimenter. Merci beaucoup pour l'aide ! |
gambix | #6 Posté le 23/12/2016 à 19:11:02 |
---|
Faire simple ! | Pas trouvé Photo Touch, ni dans la logithèque, ni même dans Synaptic (xubuntu).
Je parlais de la ferme de gambas ... menu Outil > logithèque... graphismeMoins de texte dans une signature c'est agrandir son espace. |