Aller au contenu

Messages recommandés

Posté(e) (modifié)

Bonjour,

 

Si vous faites de la photo, vous connaissez sûrement le petit programme ShiftN

Il permet de corriger la perspective 

Voici un exemple Avant / Après

image.thumb.png.d5358143804da9e9f66d56bac1f18960.png  image.thumb.png.d0494f99cecaacc5605ffb2ec2905a38.png

 

Parfois, il est nécessaire de sélectionner manuellement les lignes qui sont reconnues comme verticales à la souris.

Le bouton gauche permet de désélectionner les lignes (les mettre en rouge) et le bouton droit permet de les sélectionner (les mettre en vert)

C'est assez fastidieux.

Je viens de télécharger le code source de ShiftN et de le modifier pour permettre de faire un rectangle de sélection multiple à la souris avec la touche CTRL, ce qui est beaucoup plus rapide quand il y a toute une zone où il faut sélectionner ou désélectionner des lignes

 

La nouvelle version est téléchargeable ici :

https://drive.google.com/file/d/1-eFfFfUf7K6LIpbKCbE23qBv-ccYLDVx/view?usp=drive_link

 

Pour ceux que ça intéresse, voici le fichier modifié dans le code source :

https://drive.google.com/file/d/1c4d50LdON7sll4XtWEONp7Cl-mhatOOo/view?usp=sharing

Le code source original complet est téléchargeable ici : https://www.shiftn.de/


A bientôt

 

 

Modifié (le) par electroremy
  • J'aime 1
  • Merci ! 2
Posté(e) (modifié)

Oui, je viens de compléter mon message

Pas de dépôt Git Hub il faudrait que j'en créé un.

Je viens d'écrire un mail à l'auteur, je verrais s'il me répond (son mail n'est peut être plus valide)

Le programme n'est pas mis à jour depuis longtemps.

 

Sinon je viens de trouver un bug (déjà présent dans la version originale) à corriger si dans les paramètres de sortie on ne choisi pas de suffixe, le fichier orignal est écrasé... y compris avec la fonction "enregistrer sous" 🥶 - Je viens de jeter un œil dans le code et je ne comprend pas pourquoi... il faudra que je me plonge dessus plus tard.

Modifié (le) par electroremy
  • J'aime 1
  • Merci ! 1
Posté(e)

Bonne nouvelle l'auteur m'a répondu ; il m'autorise à créer un dépôt Git

J'ai ajouté une fonction plus tolérante pour la sélection multiple avec le bouton SHIFT (les lignes sont sélectionnées ou désélectionnées si leur centre est dans le rectangle de sélection) ; je tâche de trouver comment corriger le bug de la fonction "enregistrer sous" et après je publie

Révélation

Pour ceux que ça intéresse, la fonction sauver sous

Le suffixe est stocké dans la variable m_suffix

void CShiftNView::OnSaveAs() 
{	
	int i;
	int ind;
	int tmp=0;
	int x_neu;
	int y_neu;
	CDC* pDC;
	CString dateiname;
	Keine_Ergebnisse noresultsdlg;
	CFileDialog CDatei(FALSE);
	switch (sprach) {
		case 1: CDatei.m_ofn.lpstrTitle="Save as..."; break;
		case 2: CDatei.m_ofn.lpstrTitle="Enregistrer sous..."; break;
		case 3: CDatei.m_ofn.lpstrTitle="Guardar como..."; break;
		default: CDatei.m_ofn.lpstrTitle="Speichern unter..."; break;
	}
	switch (sprach) {
		case 1: CDatei.m_ofn.lpstrFilter="(none)\0*.*\0\0"; break;
		case 2: CDatei.m_ofn.lpstrFilter="(Tous les fichiers)\0*.*\0\0"; break;
		case 3: CDatei.m_ofn.lpstrFilter="(Todos los archivos)\0*.*\0\0"; break;
		default: CDatei.m_ofn.lpstrFilter="(kein)\0*.*\0\0"; break;
	}
	if (selektion_vorhanden>1) tmp=selektion_vorhanden;
	if (!ergebnis_vorhanden) {
		noresultsdlg.DoModal();
	}
	else {
		if (direkt_speichern) dateiname=m_sdateiname;
		else dateiname=m_dateiname;
		ind=1;
		for (i=0; i<dateiname.GetLength(); i++) {
			if (dateiname.GetAt(i)=='.') ind=0;
			if (dateiname.GetAt(i)=='\\') ind=1;
		}
		if (ind) dateiname+=".bmp";
		if (!direkt_speichern) {
			i=dateiname.GetLength()-1;
			ind=1;
			while ((ind) && (i)) {
				if (dateiname.GetAt(i)=='.') ind=0;
				if (ind) i-=1;
			}
			dateiname=dateiname.Left(i)+m_suffix;
		}
		else {
			i=dateiname.GetLength()-1;
			ind=1;
			while ((ind) && (i)) {
				if (dateiname.GetAt(i)=='.') ind=0;
				if (ind) i-=1;
			}
			dateiname=dateiname.Left(i);
		}
		CDatei.m_ofn.lpstrFile=(char*) malloc(_MAX_PATH+1);
		for (i=0; i<dateiname.GetLength(); i++) CDatei.m_ofn.lpstrFile[i]=dateiname.GetAt(i);
		CDatei.m_ofn.lpstrFile[i]='\0';
		if (CDatei.DoModal()==IDOK) {
			pDC=GetDC();
			dateiname=CDatei.GetPathName();
			ind=1;
			for (i=0; i<dateiname.GetLength(); i++) {
				if (dateiname.GetAt(i)=='.') ind=0;
				if (dateiname.GetAt(i)=='\\') ind=1;
			}
			if (ind) dateiname+=".bmp";
			i=dateiname.GetLength()-1;
			ind=1;
			while ((ind) && (i)) {
				if (dateiname.GetAt(i)=='.') ind=0;
				if (ind) i-=1;
			}
			dateiname=dateiname.Left(i)+".bmp";
			selektion_vorhanden=tmp;
			schreibe_bild(1,4,x_global,y_global,dateiname,1,1,x_neu,y_neu);
			OnDraw(pDC);
			ReleaseDC(pDC);
		}
		free(CDatei.m_ofn.lpstrFile);
	}
}

 

 

  • J'aime 2

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...