cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Choose Language Hide Translation Bar
hcarr01
Level VI

fond de carte

Bonjour à tous,

 

Je dispose d’un dossier comportant plusieurs images. J’arrive en faisant glisser une par une les images à mettre l’image correspondante en fond de carte (dans l’outil constructeur de graphique). J’aimerais pouvoir réaliser ceci de façon interactive avec un outil JMP (script JSL, sélecteur de colonne...).

C’est à dire modifier le fond de carte en fonction du choix de l’utilisateur et avec les images du dossier évoqué.

 

 

Voici par exemple à quoi ressemble une image en fond de carte en faisant glisser l’image à la main :

 

hcarr01_0-1693212287064.png

 

Merci pour votre aide !

13 REPLIES 13
hcarr01
Level VI

Re: fond de carte

Merci pour votre réponse.

J'ai essayé avec List Box mais je ne sais pas où l'intégrer dans le script

 

Names Default To Here(1);
Clear Log();

folder_of_interest = Convert File Path("$SAMPLE_IMAGES");
filenames = Files In Directory(folder_of_interest);

dt = Open("$SAMPLE_DATA/Big Class.jmp");

swap_img = Expr(
	frame = Report(gb)[FrameBox(1)];
	Try(
		cur_img = frame << FindSeg(PictSeg(1));
		cur_img << Remove;
	);
	img = New Image(folder_of_interest || cur_file);
	frame << Add Image(
		Image(img),
		bounds(top(90), Left(10), bottom(10), Right(90))
	);
);

nw = new window("",
	H List Box(
		rb = Radio Box(filenames, << Set Function(function({this},
			cur_file = (this << get selected);
			swap_img;
		))),
		gb = dt << Graph Builder(
			Size(528, 456),
			Show Control Panel(0),
			Variables(X(:weight), Y(:height)),
			Elements(Points(X, Y, Legend(3)))
		);		
	)
);

 

 

jthi
Super User

Re: fond de carte

You would replace Radio Box with List Box. If you need search feature, you would have to write it yourself as ListBox doesn't have that by default

View more...
Names Default To Here(1);
Clear Log();

folder_of_interest = Convert File Path("$SAMPLE_IMAGES");
filenames = Files In Directory(folder_of_interest);

dt = Open("$SAMPLE_DATA/Big Class.jmp");

swap_img = Expr(
	frame = Report(gb)[FrameBox(1)];
	Try(
		cur_img = frame << FindSeg(PictSeg(1));
		cur_img << Remove;
	);
	img = New Image(folder_of_interest || cur_file);
	frame << Add Image(
		Image(img)
	);
	seg = frame << FindSeg(PictSeg(1));
	seg << fill graph;
	seg << Lock(1);
);

nw = new window("",
	H List Box(
		rb = List Box(filenames, << Set Max Selected(1), << Set Function(function({this},
			cur_file = (this << get selected)[1];
			swap_img;
		))),
		gb = dt << Graph Builder(
			Size(528, 456),
			Show Control Panel(0),
			Variables(X(:weight), Y(:height)),
			Elements(Points(X, Y, Legend(3)))
		);		
	)
);
-Jarmo
hcarr01
Level VI

Re: fond de carte

Bonjour à tous,

 

A l'aide de ce script, j'obtiens dans le constructeur de graphique des images interactives en fond.

J'aimerais pouvoir bloquer les images et rendre la taille isométrique pour chacune des images.

 

J'utilise par défaut les fonctions "lock(1)" et "size to isometric" mais cela fonctionne uniquement lorsque je travaille sur 1 seule photo, je n'arrive pas à généraliser les fonctions pour toutes les images, dès que l'on modifie la sélection de la photo en fond du constructeur de graphique les fonctions n'ont plus d'effets.

 

Comment peut-on résoudre ce problème ?

Merci pour vos réponses.

jthi
Super User

Re: fond de carte

I'm not exactly sure what problem you are having. What type of images are you trying to set? How should they be aligned in your graph? Should they fill the whole graph? Do they have specific bounds?

View more...
Names Default To Here(1);
Clear Log();

folder_of_interest = Convert File Path("$SAMPLE_IMAGES");
filenames = Files In Directory(folder_of_interest);

dt = Open("$SAMPLE_DATA/Big Class.jmp");

swap_img = Expr(
	Try(
		cur_img = frame << FindSeg(PictSeg(1));
		cur_img << Remove;
	);
	img = New Image(folder_of_interest || cur_file);
	frame << Add Image(
		Image(img)
	);
	seg = frame << FindSeg(PictSeg(1));
	seg << fill graph;
	// seg << bounds(Left(0), Right(100), top(100), bottom(0));
	// {l, r, t, b} = seg << getBounds;
	seg << Lock(1);
);

nw = new window("",
	H List Box(
		rb = List Box(filenames, << Set Max Selected(1), << Set Function(function({this},
			cur_file = (this << get selected)[1];
			swap_img;
		))),
		gb = dt << Graph Builder(
			Size(528, 456),
			Show Control Panel(0),
			Variables(X(:weight), Y(:height)),
			Elements(Points(X, Y, Legend(3)))
		);		
	)
);

frame = Report(gb)[FrameBox(1)];

frame << Size to Isometric(1);
-Jarmo