Linien Dicke SFML
-
Hallo Leute,
ich bin gerade dran eine komlexe Linie zu zeichen dieses funcktioniert auch so weit.
ich setze dies mit std::vectorsf::Vertex vertices um.
Nun würde ich gerne die dicke der zu Linie verändern.
Leider finde ich nur bei SFML etwas von rechtecken die dann mit rotation in den gewünschten Winkel gebracht werden.
Ich hoffe ihr könnt mir helfen
-
There's no shape class for lines. The reason is simple: if your line has a thickness, it is a rectangle; if it doesn't, it can be drawn with a line primitive.
http://www.sfml-dev.org/tutorials/2.1/graphics-shape.php
Line with thickness:
sf::RectangleShape line(sf::Vector2f(150, 5)); line.rotate(45);
-
Danke für die Antwort aber ich möchte eine gebogene Rundung machen.
Und dort eine gerade dargestellt
-
Jetzt hast du ja vermutlich auch Liniensegmente, die du aneinandersetzt, oder? Dann müsstest du halt jedes Segment in ein entsprechendes Rechteck umwandeln. Falls wir aneinander vorbeireden, zeig mal Minimalcode zu dem, was du momentan machst.
-
Dobi schrieb:
Jetzt hast du ja vermutlich auch Liniensegmente, die du aneinandersetzt, oder? Dann müsstest du halt jedes Segment in ein entsprechendes Rechteck umwandeln.
Das wird aber ziemlich eckig aussehen. Nicht nur eckig, sondern richtig kantig, wenn die Liniendicke hoch ist.
Fände ich richtig doof, wenn SFML das nicht könnte. Das Problem tritt ja jetzt nicht gerade selten auf. Auch zum Beispiel im Kontext von Splines.
-
hier mein code der linien
std::vector<sf::Vertex> vertices; //sf::RectangleShape for (int i = 0; i < BevelStruct->TopBevelEnd; (i = i + 2)) { vertices.push_back( sf::Vertex( sf::Vector2f(BevelStruct->Information.Shape[i], BevelStruct->Information.Shape[(i + 1)]), sf::Color::Red)); } for (int i = BevelStruct->TopBevelEnd; i < BevelStruct->RightBevelEnd; (i = + 2)) { vertices.push_back( sf::Vertex( sf::Vector2f(BevelStruct->Information.Shape[i], BevelStruct->Information.Shape[(i + 1)]), sf::Color::Red)); } for (int i = BevelStruct->RightBevelEnd; i < BevelStruct->BottomBevelEnd; (i = i + 2)) { vertices.push_back( sf::Vertex( sf::Vector2f(BevelStruct->Information.Shape[i], BevelStruct->Information.Shape[(i + 1)]), sf::Color::Red)); } for (int i = BevelStruct->BottomBevelEnd; i < BevelStruct->LeftBevelEnd; (i = i + 2)) { vertices.push_back( sf::Vertex( sf::Vector2f(BevelStruct->Information.Shape[i], BevelStruct->Information.Shape[(i + 1)]), sf::Color::Red)); }
-
Jetzt wärs total super wenn mans compilieren und testen könnte ohne noch was dran machen zu müssen. ( http://sscce.org/ )?
Eine einfache möglichkeit, dicke Linien mit abgerundeten ecken zu bekommen, ist die, einfach Kreise an jedes Ende zu malen wie z.B. hier:
http://daiw.de/games/maze/ (code: https://github.com/Dobiasd/Maze)