Polyline mit gestrichelter Linie



  • Hallo,

    ich hab folgendes Problem:

    Ich möchte eine Polyline mit einer gestrichelten Linie mit Strichstärke > 1 zeichnen. Leider wird die Methode bei vielen Punkten sehr langsam. Verwende ich MoveTo und LineTo, geht das um einiges schneller nur habe ich bei Kurven das Problem, dass das gestrichelte eher als durchgezogene Linie dargestellt wird (bei Strichstärke = 1 funktioniert es übrigens wunderbar)

    Den "dicken" Pen erzeuge ich mittels Logbrush:

    LOGBRUSH logBrush;

    logBrush.lbStyle = BS_SOLID;
    logBrush.lbColor = m_Color;
    logBrush.lbHatch = 0;

    return new CPen (m_Style | PS_GEOMETRIC , m_Width, &logBrush);

    Kennt jemand eine Möglichkeit, die mir zu mehr "Geschwindigkeit" verhilft ?

    Gruß
    Nine



  • Hallo 9,

    nineofseven schrieb:

    Kennt jemand eine Möglichkeit, die mir zu mehr "Geschwindigkeit" verhilft ?

    Keine "Geschwindigkeit"sverbesserung, ABER
    ein verbesserter

    // Nur ein (neuer) Befehl
    return new CPen (PS_DOT , m_Width, m_Color);
    

    Erklärung:

    Es ist ein anderer Konstruktor, der erste Pararmeter steht für den Style.
    "PS_DOT" heißt in etwa gepunktet, für andere Styles schau mal unter <wingdi.h>.
    Der zweite Pararmeter ist geblieben, der Dritte ist jetzt für die farbe zuständig.



  • Hi Dennis,

    das benutze ich auch, geht aber meiner Meinung nach ja nur mit
    Strichstärke 1 bei gestrichelten Linien.

    Eigentlich sieht es so aus bei mir:

    if ((m_Style == PS_SOLID) || (m_Width <= 1)) {

    return new CPen (m_Style , m_Width, m_Color);

    } else {

    LOGBRUSH logBrush;

    logBrush.lbStyle = BS_SOLID;
    logBrush.lbColor = m_Color;
    logBrush.lbHatch = 0;

    return new CPen (m_Style | PS_GEOMETRIC , m_Width, &logBrush);
    }



  • Eine konkrete Lösung weiss ich auch nicht, aber wäre es eine Alternative zu schummeln und einfach zwei Linien mit Stärke 1 zu zeichnen, ein paar Pixel vertikal verschoben ?


Anmelden zum Antworten