Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Demolyde

Pages: [1]
1
Graphique / Le redimensionnement détruit mon image
« le: Juillet 27, 2019, 02:44:15 pm »
Bonjour,
je viens vers vous car je ne trouve pas de solution à mon problème.

Le but est d'effectuer un simple redimensionnement d'une partition pour l'afficher dans ma fenêtre SFML, je suis conscient que redimensionner signifie aussi perte de qualité, seulement ici, la partition devient illisible (des lignes disparaissent). Chose qui ne parvient pourtant pas avec un visionneur d'image standard. Pourriez-vous m'indiquer l'origine du problème et un moyen de parvenir à mes fins ?

J'ai essayé le redimensionnement via une "View", via un "sprite.setScale" mais le problème reste identique
et "sprite.setSmooth(true)" rends les choses meilleures mais pas encore assez ...

Puisque code et image aident toujours en voici :

(ici la perte de qualité est supportable, mais avec d'autres partitions c'est un carnage ...)
- test.jpg est la partition en question
- Capture.png est un rendu illustrant mon problème (à gauche SFML | à droite le visionneur Windows, tout deux avec la même dimension)

Enfin voici une synthèse de mon code :
int main() {
    int width = sf::VideoMode::getDesktopMode().width*0.9;
    int height = sf::VideoMode::getDesktopMode().height*0.9;
    sf::RenderWindow window(sf::VideoMode(width, height), "Partition Reader");

    sf::Texture morceauTexture;
    morceauTexture.setSmooth(true);
    sf::Sprite morceauSprite;

    if (!morceauTexture.loadFromFile("./test.jpg"))
    {
        std::cout << "Failed to load page" << std::endl;
        return -1;
    }
    morceauSprite.setTexture(morceauTexture);
    float scale = std::min((float)(width)/morceauTexture.getSize().x, (float)(height)/morceauTexture.getSize().y);
    morceauSprite.setScale(scale, scale);
    morceauSprite.setPosition((width-morceauTexture.getSize().x*scale)/2,
                              (height-morceauTexture.getSize().y*scale)/2);

    window.clear();
    window.draw(morceauSprite);
    window.display();

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            switch (event.type)
            {
                case sf::Event::Closed:
                    window.close();
                    break;
                default:
                    break;
            }
        }
    }
    return 0;
}
 

test.jpg :
https://drive.google.com/file/d/1uOXqo2Bwq3ZLnmQiebdq3WdP_FQi41eh/view?usp=sharing

capture.png :
https://drive.google.com/file/d/18fgHPp-l4Gd6TOFRPudGLIn3UEwNhsk1/view?usp=sharing

2
Général / Re : Les sous-menus
« le: Juillet 14, 2016, 07:13:42 pm »
J'ai trouvé une alternative, je travaille dans une boucle switch qui lance les fenêtre en fonction de ce qu'à retourné la précédente

3
Général / [Résolu] Les sous-menus
« le: Juillet 14, 2016, 06:22:10 pm »
Bonjours, désolé de revenir vers vous, mais je me heurte à nouveau à un problème :
il faut que, à partir d'un menu, je puisse accéder à un sous menu.
Voila j'ai déjà un menu simple qui fonctionne parfaitement mais le changement doit maintenant se faire dans la même fenêtre, chose que je ne sais pas comment gérer mise à part un code énorme.

Je m'explique autrement dans le cas où ce ne serais pas clair:
J'ai une fenêtre dans laquelle j'ai un premier menu, en cliquant sur un des boutons, je doit : effacer l’écran, ré-afficher le background et afficher mon nouveau menu (sous-menu) tout cela sans changer de fenêtre ...
Je doit bien sur également pouvoir revenir au menu précédent ...

Après diverse recherche, je ne trouve pas comment procéder : la seul piste plausible que j'ai vu se trouve sur un forum :
Si t'as plusieurs menu imbriqué, il faudrait que t'apprennes à créer une FSM (machine à états).
Mais je ne trouve rien à se sujet ...

Je cherche donc des tutos, des liens, des codes sources, bref de l'aide quoi
quelqu'un pourrait-il m'éclairer ? Me dire comment procéder ou me rediriger vers un tuto
Je ne doit, à mon avis pas taper les bons mots-clef ...

merci d'avance

4
Graphique / Re : [Résolu] Auto-découpage des textures
« le: Juillet 02, 2016, 10:13:44 pm »
mais ducoup, j'en profite pour rebondir là dessus, si j'en ai besoin un jour comment crée une fonction qui retourne un "int" à tableau multidirectionnel ?

5
Graphique / Re : Auto-découpage des textures
« le: Juillet 02, 2016, 10:02:53 pm »
C'est vraie que ta solution est beaucoup plus simple et performante, ...
Je vais travailler dans ce sens merci beaucoup ;-)

6
Graphique / [Résolu] Auto-découpage des textures
« le: Juillet 02, 2016, 04:46:48 pm »
Bonjour, je viens à vous car après plusieurs recherches, je ne trouve pas mon bonheur (après je n'est peut être pas les bons mots-clés, si c'est le cas j'en suis désolé)
J'ai donc tenté de réaliser le code moi-même, je tiens à préciser que je suis débutant (en C++ du moins)

Le but de ma fonction est de découper une texture (faire une sorte de quadrillage) pour ne pas avoir des dizaines d'images

sf::Texture decomp_texture(string etape ,string file, int width_array, int height_array, int width_img, int height_img) {
    sf::Texture texture[width_array*height_array];
    int x_rec=0, y_rec=0;
    for (int y=0; y<height_array; y++) {
        for (int x=0;x<width_array; x++) {
            texture[x*y].loadFromFile("Custom/Textures/"+texture_folder+"/"+etape+"/"+file+".png",
                                       sf::IntRect(x_rec,y_rec,x_rec+width_img,y_rec+height_img));
            x_rec = x_rec + height_img;
        }
        x_rec = 0;
        y_rec = y_rec + width_img;
    }
    return texture;
}

c'est la première fois que j'essaie de retourner des "sf::Texture", j'admet que je ne sais pas vraiment comment m'y prendre

J'obtient cette erreur :
error: could not convert '(sf::Texture*)(& texture)' from 'sf::Texture*' to 'sf::Texture'
return texture;
et ce warning :
warning: control reaches end of non-void function [-Wreturn-type]

7
Graphique / Re : Error: 'window' does not name a type
« le: Juin 26, 2016, 05:16:30 pm »
Merci beaucoup, tu a résolu mon problème ...
le problème était que j'avais isolé la ligne pour la tester seul, mais, cette ligne été hors de toute fonction ...
Désolé de t'avoir fait perdre ton temps pour si peu ...

8
Graphique / [Résolu] Error: 'window' does not name a type
« le: Juin 26, 2016, 04:47:03 pm »
Bonjour, je suis nouveau sur ce site et j'apprends actuellement le langage. Mais voila je me heurte à un problème qui m’empêche d'avancer et que je n'arrive pas à régler malgré mes nombreuse recherches :

#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
...
sf::RenderWindow window;
...
window.setSize(sf::Vector2u(640,480);

Je crois avoir compris que la class "RenderWindow" hérite de celle de "Window", alors pourquoi une fonction se trouvant dans la class "Windows" ne marcherais pas ici ???

L'erreur est :
error: 'window' does not name a type

Mon problème est de "régler" la taille de la fenêtre au démarrage selon une valeur lus dans un fichier de type "ini"

Pages: [1]
anything