Linie mit Farbverlauf???



  • Hallo, ich möchte gern eine Linie zeichnen, die zum Beispiel am "Anfang" rot ist und zum "Ende" hin gelb wird. Mit nem Pen lässt sich das wohl nicht realisieren, aber da es ja gradientfill gibt, ist das vielleicht auch möglich?

    Falls es das nicht gibt und ich das per Hand machen sollte, bietet es sich doch an, mit den Farbwerten so umzugehen, wie zum beispiel mit der Y-Koordinate in Abhängigkeit von der X-Koordinate (bei bestimmten Linien), also mit dieser Fehlergeschichte...?

    mfG



  • Ja, ne einfache lineare Interpolation.

    Schwieriger ist da noch, die Linie an sich zu zeichnen.
    Such mal nach Bresenham
    Wenn du den erstmal verstanden hast, sind die Farbwerte ein Klacks 😉



  • Ja, das mit Bresenhams Linienalgo für die Farbwerte meinte ich ja... (das is dach das mit dem sogenannten 'Fehler') Die Frage ist halt, obs da nich was von Hause aus in der WinApi gibt... Interpolation is doch schon sehr rechenaufwendig... Soll ne Echtzeitsimulation mit tausenden solcher Linien werden...



  • D1BAKEL schrieb:

    Interpolation is doch schon sehr rechenaufwendig... Soll ne Echtzeitsimulation mit tausenden solcher Linien werden...

    Eigentlich ist diese Art der Interpolation nicht so wirklich rechenaufwendig.
    Aber das Pixelsetzen generell kannst du dann vergessen.
    Du wirst dich wohl mit Memory-Bitmaps auseinandersetzen müssen.

    Oder du schaust gleich mal Direct-Graphics an und lässt den Graphikbeschleuniger deine Verlaufslinien zeichnen...



  • Müsste auch mit GDI+ funzen (Graphics::FillPolygon und LinearGradientBrush oder so...)



  • Errechne für jedes einzelne Pixel die Farbwerte und die Kordinaten und setze dann immer nur die Pixel wenn das zu langsam geht dann machst du das ganze mit OpenGL. Erfahrungsgemäß sind Rechner meistens besser im Rechnen als wir denken. 😉 Von DirectX kann ich nur abraten da das nur für Spiele gedacht ist. CAD und Simulation stehen schon länger unter der vorherschaft von OpenGl. Wenn die Simualtion nur 2D ist kannst du dir auch mal die SDL angucken, die basiert auf OpenGL ist aber eben nur für 2D (und ich glaube daher einfacher für dich)



  • naja, mit directX hab ich auch schon einiges gemacht, aber das will/darf ich hier nicht verwenden, ansonsten danke...


Anmelden zum Antworten