De quel code de script ai-je besoin pour ajouter automatiquement une image d'arrière-plan à une zone graphique ?De quel code de script ai-je besoin pour ajouter automatiquement une image d'arrière-plan à une zone graphique ?
Voici un exemple de script simple que j'utilise pour créer une zone graphique :
win = New Window( "Map",
Graph Box(
Frame Size(600, 600),
X Scale(0, 1252),
Y Scale(0, 1252),
Pen Color("white"),
Line( {10, 10}, {10, 1200} );
Line( {600, 10}, {600, 1200} );
Line( {1200, 10}, {1200, 1200} );
)
);Après avoir exécuté le script ci-dessus, je peux faire glisser et déposer une image jpg en arrière-plan et la manipuler (faire pivoter, modifier la taille, modifier la transparence, etc.).
De quel code ai-je besoin pour automatiser l'ajout de l'arrière-plan de l'image jpg dans le cadre du script ?
Re : De quel code de script ai-je besoin pour ajouter automatiquement une image d'arrière-plan à une zone de graphique ?Merci pour l'image. Je suis capable de le trouver maintenant ! J'ai accidentellement cherché sous "Fonctions" au lieu de "Toutes les catégories".Re : De quel code de script ai-je besoin pour ajouter automatiquement une image d'arrière-plan à une zone de graphique ?Voici une image de la référence à Coller l'image d'arrière-plan

Re : De quel code de script ai-je besoin pour ajouter automatiquement une image d'arrière-plan à une zone de graphique ?Vous êtes vraiment proche. Le principal problème, comme vous le soupçonnez, est le message de rapport. Le message de rapport est envoyé à une plate-forme pour obtenir l'arborescence de la boîte d'affichage. La boîte graphique est un arbre displaybox, pas une plate-forme. Il y a aussi quelques ajustements mineurs aux paramètres de positionnement (et j'ai aussi joué avec d'autres paramètres.) Les positions en haut, à gauche et en bas à droite sont spécifiées dans les mêmes coordonnées que les axes.
win = New Window( "Map",
gb=Graph Box(
Frame Size(600, 600),
X Scale(0, 1252),
Y Scale(0, 1252),
Pen Color("red"),
Line( {10, 10}, {10, 1200} );
Line( {600, 10}, {600, 1200} );
Line( {1200, 10}, {1200, 1200} );
)
);
fb1 = gb[Frame Box( 1 )];
fb1 << add Image(
Open(
Convert File Path(
"$SAMPLE_IMAGES/black rhino footprint.jpg"
)
),
Transparency( 0.5 ),
Rotate( 45 ),
Bounds(
Top( 800 ),Left( 100 ),
Bottom( 100 ),Right( 800 )
),
//SetSize( {300, 210} )
);
background picture positioned and rotatedbackground picture positioned and rotatedimage d'arrière-plan positionnée et tournée
Re : De quel code de script ai-je besoin pour ajouter automatiquement une image d'arrière-plan à une zone de graphique ?xnelson,
Je ne sais pas comment utiliser votre suggestion. En regardant dans mon aide ==> Scripting Index, je n'ai pas trouvé votre "Help==>Scripting Index==>FrameBox==>Paste Background Image" référencé. J'ai essayé le script suivant créé à partir de mon exemple de script et en essayant d'appliquer votre suggestion :
// Here's my original script:
win = New Window( "Map",
Graph Box(
Frame Size(600, 600),
X Scale(0, 1252),
Y Scale(0, 1252),
Pen Color("white"),
Line( {10, 10}, {10, 1200} );
Line( {600, 10}, {600, 1200} );
Line( {1200, 10}, {1200, 1200} );
)
);
// And here's what I added based on your suggestion:
opr1 = win << report;
fb1 = opr1[Frame Box( 1 )];
fb1 << Add Image(
Open(
Convert File Path(
"$SAMPLE_IMAGES/black rhino footprint.jpg"
)
),
Transparency( 0.9 ),
Rotate( 90 ),
Bounds(
Left( 0.135416666666667 ),
Right( 3.26041666666667 ),
Top( 11.8333333333333 ),
Bottom( -1 )
),
SetSize( {300, 210} )
);Lorsque j'exécute le script, j'obtiens un message d'erreur disant :
"La zone d'affichage 'EvalContextBox' ne reconnaît pas le message 'rapport' ; peut-être voulez-vous dire l'un de ceux-ci : <<<<<<<< <<<<<<<<<<
J'ai parcouru l'index de script et j'ai trouvé une référence à "rapport", mais avec la syntaxe "y= Report (objet de plate-forme)". J'ai donc essayé de remplacer la ligne "opr1 = win << report;" avec "opr1 = Report(win)". Cela a supprimé le premier message d'erreur, mais maintenant je reçois un message d'erreur "Send Expects Scriptable Object in access or evaluation of 'Send' , fb1 << /*###*/Add Image(".
J'ai pensé que je devais peut-être faire référence à la zone de graphique elle-même au lieu de la nouvelle fenêtre, alors j'ai essayé le script :
win = New Window( "Map",
gb= Graph Box(
Frame Size(600, 600),
X Scale(0, 1252),
Y Scale(0, 1252),
Pen Color("white"),
Line( {10, 10}, {10, 1200} );
Line( {600, 10}, {600, 1200} );
Line( {1200, 10}, {1200, 1200} );
)
);
opr1 = Report( gb );
fb1 = opr1[Frame Box( 1 )];
fb1 << Add Image(
Open(
Convert File Path(
"$SAMPLE_IMAGES/black rhino footprint.jpg"
)
),
Transparency( 0.9 ),
Rotate( 90 ),
Bounds(
Left( 0.135416666666667 ),
Right( 3.26041666666667 ),
Top( 11.8333333333333 ),
Bottom( -1 )
),
SetSize( {300, 210} )
);(Notez que j'ai d'abord essayé la syntaxe "opr1 = gb << report", mais cela m'a donné l'erreur "report" d'origine.) J'ai toujours un "Send Expects Scriptable Object in access or evaluation of 'Send' , fb1 << / *###*/Ajouter une image(" erreur.
Qu'est-ce que je fais mal?
Existe-t-il également un moyen d'intégrer l'image dans le script ? Plusieurs personnes exécuteront le script, de sorte qu'une référence spécifique à un emplacement d'image ne sera pas mise à l'échelle facilement. Par exemple, au lieu d'utiliser "Open" lorsque j'ajoute une image, puis-je utiliser "Set Blob (Char To Blob())" ?
Re : De quel code de script ai-je besoin pour ajouter automatiquement une image d'arrière-plan à une zone de graphique ?Vous pourriez avoir des idées de ce post sur la façon dont la superposition des segments du cadre peut être contrôlée pour déplacer votre image devant ou derrière vos données. Il est possible d'avoir une carte, des points de données et des images, et de les obtenir dans l'ordre dont vous avez besoin.
Re : De quel code de script ai-je besoin pour ajouter automatiquement une image d'arrière-plan à une zone de graphique ?Ce que vous devrez faire est de coller l'image d'arrière-plan dans la Frame Box() de votre Graph Box(). Vous trouverez ci-dessous l'exemple tiré directement de l'index de script illustrant comment procéder
Aide==>Index des scripts==>FrameBox==>Coller l'image d'arrière-plan
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Animals.jmp" );
op = Overlay Plot(
X( :subject ),
Y( :miles ),
Separate Axes( 1 )
);
opr1 = op << report;
opr2 = opr1 << Clone Box;
opr1 << append( opr2 );
fb1 = opr1[Frame Box( 1 )];
fb1 << Add Image(
Open(
Convert File Path(
"$SAMPLE_IMAGES/black rhino footprint.jpg"
)
),
Transparency( 0.9 ),
Rotate( 90 ),
Bounds(
Left( 0.135416666666667 ),
Right( 3.26041666666667 ),
Top( 11.8333333333333 ),
Bottom( -1 )
),
SetSize( {300, 210} )
);
fb1 << Copy Picture;
fb2 = opr2[Frame Box( 1 )];
fb2 << Paste Background Image;