electroremy Posté(e) dimanche à 19:13 Posté(e) dimanche à 19:13 (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 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) dimanche à 20:04 par electroremy 1 2
pjtlivjy Posté(e) dimanche à 20:02 Posté(e) dimanche à 20:02 merci pour la partie @electroremy, je ne connaissais pas l'auteur partage son code source ?
electroremy Posté(e) dimanche à 20:03 Auteur Posté(e) dimanche à 20:03 (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) dimanche à 20:08 par electroremy 1 1
electroremy Posté(e) lundi à 11:09 Auteur Posté(e) lundi à 11:09 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); } } 2
electroremy Posté(e) lundi à 15:40 Auteur Posté(e) lundi à 15:40 Ca y est le bug est corrigé J'ai tout publié sur Git Hub (le code source original mis à jour ainsi que la nouvelle version portable) https://github.com/electroremy/ShiftN A bientôt
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant