Lorsque vous définissez un fond d’écran, vous pouvez choisir entre mosaïque, zoom, centre, échelle, remplissage ou span options. Que signifient-ils?
Comment l'option scale est différente de zoom et span? Je ne vois pas la différence sur aucun de mes fonds d'écran.
Pour comprendre les subtilités des différentes options disponibles, il vaut la peine de chercher un peu dans le code source pour voir ce qui se passe avec chaque option. Je vais faire de mon mieux pour dire que c'est simplement que possible, mais avec l'avertissement, vous devez apprendre un peu de mathématiques!
Permet de saisir le code source:
apt-get source gnome-desktop3
cd gnome-desktop*
cd libgnome-desktop
Ouvrez maintenant le module source suivant avec votre éditeur de texte préféré:
gedit gnome-bg.c
Il y a deux fonctions clés à examiner:
get_scaled_pixbuf
commutateur (placement) { affaire G_DESKTOP_BACKGROUND_STYLE_SPANNED: new = pixbuf_scale_to_fit (pixbuf, largeur, hauteur); break; ; ] case G_DESKTOP_BACKGROUND_STYLE_ZOOM: new = pixbuf_scale_to_min (pixbuf, largeur, hauteur); ; . , largeur, hauteur, GDK_INTERP_BILINEAR); pause; . .____.] pause; cas G_DESKTOP_BACKGROUND_STYLE_CENTERED: cas G_DESKTOP_BACKGROUND_STYLE_WALLPAPER: par défaut: nouveau = Pix_uf_clip Pause; }
et la fonction:
draw_image_area
commutateur (bg-> placement) { cas G_DESKTOP_BACKGROUND_STYLE_WALLPAPER: pixbuf_tile (scaled, dest); break; case G_DESKTOP_BACKGROUND_STYLE_OZOOM: case G_DESKTOP_BACKGROUND_STYLE_CENTERED: cas > x, y + area-> y, 1.0); pause; cas G_DESKTOP_BACKGROUND_STYLE_SPANNED: pixbuf_blend (scale, dest, 0, 0, w, h, x, y , 1.0); Pause; Défaut: G_assert_not_reached (); Pause;
Ceci est décrit par l'option de cas G_DESKTOP_BACKGROUND_STYLE_SPANNED
Le papier peint (pixbuf) est d'abord mis à l'échelle de la zone à remplir (pixbuf_scale_to_fit), c.-à-d. Prenez le papier peint d'origine et développez sa largeur et sa hauteur pour l'adapter à la zone.
Il utilise l'algorithme suivant pour développer:
facteur = MIN (largeur_max/src_width, hauteur_max/src_height); new_width = floor (facteur src * largeur + 0,5); new_height = plancher (facteur src_height * + 0,5);
src _ est la largeur ou la hauteur du papier peint, alors que max _ est la surface. dimension largeur ou hauteur
Un algorithme assez compliqué, comme vous pouvez le constater, mais il essaie en gros de déterminer quelle est la dimension minimale à développer avant de redimensionner les deux dimensions de manière linéaire par le même facteur qu’il a calculé.
Cette zone est la zone combinée de votre moniteur ou de vos moniteurs.
Le papier peint résultant (pixbuf) est ensuite mélangé à la couleur d'arrière-plan du bureau pour l'ensemble de la zone.
Ceci est décrit par l'option de cas G_DESKTOP_BACKGROUND_STYLE_SCALED
Comme vous pouvez le constater dans le code source, il ressemble beaucoup à SPAN. Il utilise le même algorithme pour redimensionner l'image en tant que SPAN.
Le fond d’écran résultant (pixbuf) est ensuite mélangé à la couleur d’arrière-plan du bureau pour la zone du port de visualisation, c’est-à-dire non pas la zone combinée de tous les moniteurs, mais la zone de chaque moniteur individuellement.
Ceci est décrit par l'option de cas G_DESKTOP_BACKGROUND_ZOOM
Le papier peint (pixbuf) est d'abord mis à l'échelle de la zone à remplir (pixbuf_scale_to_min), c.-à-d. Prenez le papier peint d'origine et développez sa largeur et sa hauteur pour l'adapter à la zone.
Il utilise l'algorithme suivant pour développer:
facteur = MAX (min_width/src_width, min_height/src_height); new_width = floor (src_width * facteur + 0,5); new_height = floor (src_height * facteur + 0,5);
src _ est la largeur ou la hauteur du papier peint, alors que max _ est la surface. dimension largeur ou hauteur *
Remarquez la différence subtile par rapport aux deux options précédentes: il calcule la dimension maximale à développer avant de redimensionner les deux dimensions de manière linéaire par le même facteur que celui calculé.
Le fond d’écran résultant (pixbuf) est ensuite mélangé à la couleur d’arrière-plan du bureau pour la zone du port de visualisation, c’est-à-dire non pas la zone combinée de tous les moniteurs, mais la zone de chaque moniteur individuellement.
Ceci est décrit par l'option de cas G_DESKTOP_BACKGROUND_STRETCHED
Le papier peint (pixbuf) s’agrandit en largeur et en hauteur, vous pouvez donc obtenir une distorsion si votre papier peint n’a pas exactement les dimensions du papier peint.
Le fond d’écran résultant (pixbuf) est ensuite mélangé à la couleur d’arrière-plan du bureau pour la zone du port de visualisation, c’est-à-dire non pas la zone combinée de tous les moniteurs, mais la zone de chaque moniteur individuellement.
Ceci est décrit par l'option de cas G_DESKTOP_BACKGROUND_CENTRED
Le papier peint (pixbuf) est en fait découpé à la taille s'il est trop grand pour s'adapter à la zone, c'est-à-dire que la largeur est réduite à la largeur de la zone et que la hauteur est réduite à la hauteur de la zone.
Le fond d’écran résultant (pixbuf) est ensuite mélangé à la couleur d’arrière-plan du bureau pour la zone du port de visualisation, c’est-à-dire non pas la zone combinée de tous les moniteurs, mais la zone de chaque moniteur individuellement. L'image résultante est ensuite dessinée au centre de la zone globale du moniteur.
Ceci est décrit par l'option de cas G_DESKTOP_BACKGROUND_WALLPAPER
Le papier peint (pixbuf) est également coupé en tant qu'option Centre .
Le fond d’écran résultant (pixbuf) est ensuite mélangé à la couleur d’arrière-plan du bureau pour la zone du port de visualisation, c’est-à-dire non pas la zone combinée de tous les moniteurs, mais la zone de chaque moniteur individuellement. L'image résultante est copiée de manière répétée en commençant dans un coin, remplissant la zone globale avec chaque image, c'est-à-dire en mosaïque dans le sens de la largeur et de la hauteur.
Cela va être difficile à voir mais ...
Désolé, je ne peux pas fournir d’échantillon autre que mosaïque, mais les images dépendent fortement de votre moniteur. Vous devriez être en mesure de voir facilement les options en vigueur si vous utilisez une image avec un ratio d'aspect trop petit et avec un mauvais aspect à tester.
De mes observations sur plusieurs images: