SFML Sprite füllen
-
Hallo, ich möchte in SFML ein Sprite eine Größe zuweisen und dieses dann mit kleineren Bildern befüllen. Ich habe im Netz jedeoch nichts brauchbares gefunden, womit ich dies bewerkstelligen könnte. Kennt jemand vielleicht eine Lösung für dieses Problem oder hat dieses schon einmal gemacht?
In SDL ging das immer ganz einfach, ich habe ein Rect erstellt und dann von einem Image ausgeschnitten und auf ein anderes geblittet...
-
Hm. Mach das einfacher. Für Jedes Bild ein Sprite. Deren Positionen setzte dann so, dass sie einanander grenzen. Das alles packste in eine sf::View und bewegst die View
-
Hmm... Ich programmiere gerade einen Leveleditor und bin jetzt soweit, das ich mit meiner Maus ein Rectangle ziehen kann und an dieser Stelle, wo sich das Rectangle befindet soll dann ein Collisionobject erschaffen werden. Und ich möchte dann dieses Object mit ganzvielen kleinen Bildern befüllen
Obstacle::Obstacle(ImageManager &im, const std::string filepath, int x_pos, int y_pos, int width, int height): w(width), h(height) { spr_obstacle.SetPosition(static_cast<float>(x_pos), static_cast<float>(y_pos)); spr_obstacle.SetSubRect(sf::IntRect(x_pos,y_pos,width,height)); sf::Image img(im.requestImage("block.png")); int w_img = img.GetWidth(); int h_img = img.GetHeight(); int w_spr = static_cast<int>(spr_obstacle.GetSize().x); int h_spr = static_cast<int>(spr_obstacle.GetSize().y); int x_repeat = w_spr/w_img; int y_repeat = h_spr/h_img; if (x_repeat<1) x_repeat = 1; if (y_repeat<1) y_repeat = 1; for (int y=0; y<y_repeat; ++y) { for(int x=0; x<x_repeat; ++x) { spr_obstacle.SetImage(img); spr_obstacle.SetSubRect( } } spr_obstacle.SetImage(im.requestImage(filepath)); }
-
HAWXthy schrieb:
Und ich möchte dann dieses Object mit ganzvielen kleinen Bildern befüllen
Und wo liegt das Problem? Oder was stört dich an Finns Ansatz?
Ein
sf::Sprite
ist dafür konzipiert, genau einsf::Image
zu referenzieren. Also brauchst du mehreresf::Sprite
-Objekte, wenn du unabhängige Bilder hast.
-
Mein Problem ist das ich mit meinem View die "World" anzeige. Und mit vielen kleinen Bildern ein Collisionobject sprich Sprite zusammen blitten möchte. Leider kann ich die Größe des Sprites nicht angeben. Also so wie ich das verstanden habe muss ich jetzt ganz viele Sprites machen und sie all nebeneinander auf dem Screen blitten, da ich aus vielen Sprites nicht eins machen kann. Müsste eigentlich gehen ich versuchs dann gleich mal. Dankeschön