bcb canvas (auf den farbwert einer linie zugreifen)



  • wie kann man eine linie nachdem sie gezeichnet wurde
    wieder ansprechen und die farbe rausziehen ?

    gibt es da eine andere möglichkeit als zu wissen wo die linie vorbeikommt
    und den entsprechenden pixel zu nehmen ?

    bitte sagen wenn ich ich zu unpräzise ausgedrückt habe.

    die information daß es nicht möglich ist hilft auch
    wenn es denn so ist.



  • Sehe ich das richtig, dass sich die Frage auf den Borland C++ Builder bezieht?

    Warum hast du dann nicht da gepostet?



  • Ich antworte trotzdem mal:
    Erstaml, ja die Frage ist undeutlich!

    Du musst doch eh die Gerade in deiner Paint-Methode immer wieder neu zeichnen.
    Dann zeichnest du sie halt irgendwann anders und erklärst das Canvas für
    ungültig (Methode wird Invalidate oder ähnlich heissen).

    Jockel



  • ich bin neu,
    hab die themenbereiche überflogen
    und keinen bcb (borland c++ builder) unterbereiche gefunden.

    wie verschieb ich mein posting dahin ?
    danke daß du trotzdem antwortest.

    void __fastcall TForm1::FormPaint(TObject *Sender)
    {
    Canvas->Pen->Color = 0x000000FF;
    Canvas->MoveTo(Panel1->Left + (Panel1->Width/2),Panel1->Top + (Panel1->Height/2));
    Canvas->LineTo(Panel65->Left + (Panel65->Width/2),Panel65->Top + (Panel65->Height/2));
    }

    die color eigenschaft der linie wollte ich wieder auslesen,
    damit ich da nicht noch eine extra variable mit dem farbwert erstellen muß.

    ich habe nähmlich vor einen ganzen haufen linien zu zeichnen.

    auf die weise will ich am ende übungsweise ein neuronales netzwerk modellieren.



  • fuse schrieb:

    hab die themenbereiche überflogen
    und keinen bcb (borland c++ builder) unterbereiche gefunden.

    Wie wäre es denn mit "Frameworks / VCL/CLX (Borland C++ Builder)" ich glaube persönlich das der Text in Klammern recht aussagekräftig ist 😉

    cu André



  • schön gut aber wie kommt der text nun dahin
    (ich hab das als unterbereich von c++ vermutet) ?
    da wird den ein moderator/admin verschieben müssen.

    danke schonmal für die rege komunikatonsteilnahme 🙂



  • fuse schrieb:

    und keinen bcb (borland c++ builder) unterbereiche gefunden.

    Wie schon gesagt ist deutlich in der Hauptliste oben zu erkennen.

    wie verschieb ich mein posting dahin ?

    Indem du wartest bis dich ein Moderator von hier dahin verschiebt... und dann in "meinem" Forum bist 😉

    die color eigenschaft der linie wollte ich wieder auslesen,

    Nadem du die Linie gezeichnest hast gibt es diese als einzelnes Objekt nicht mehr. Du könntest über die Eigenschaft TCanvas::Pixels auf eine der Stelle zugreifen die von der Linie belegt werden, aber das halte ich für schlecht.

    damit ich da nicht noch eine extra variable mit dem farbwert erstellen muß.

    Das ist meiner Meinung nach die sauberer und effizientere Lösung. Da ein Farbwert nur 4 byte belegt ist das auch Speichertechnisch kein Problem.

    bis bald
    akari



  • damit währe meine frage vorerst beantwortet.
    vielen dank 🙂



  • das wird nun ein ziemlicher spagetticode.

    void __fastcall TForm1::FormPaint(TObject *Sender)
    {
    Canvas->Pen->Color = panel_1_to_65_;
    Canvas->MoveTo(Panel1->Left + (Panel1->Width/2),Panel1->Top + (Panel1->Height/2));
    Canvas->LineTo(Panel65->Left + (Panel65->Width/2),Panel65->Top + (Panel65->Height/2));

    bis zu

    Canvas->Pen->Color = panel_1_to_109_;
    Canvas->MoveTo(Panel1->Left + (Panel1->Width/2),Panel1->Top + (Panel1->Height/2));
    Canvas->LineTo(Panel109->Left + (Panel109->Width/2),Panel109->Top + (Panel109->Height/2));

    und dann das ganze nochmal mit pannel 2 bis pannel 64.

    und das alles nochmal für jede schicht.

    geht das nicht irgendwie eleganter ?
    kann man nen variablennamenteil mit anderen variablen angeben
    die man inkrementiert (+1) z.b. mit (++[variablennahme];)
    (in alten, simplen batch scripts ging das).
    gibt es wenn nicht wenigstens ein tool das die zahlen
    in aufsteigender reihenfolge einträgt ?

    was macht man bei dieser warnung in dem zusammenhang ?:
    [C++ Warnung] TTest.cpp(20): W8018 int wird TColor zugewiesen

    im ersten codeauszug im thread kann man die zuweisung sehen (0x00000000).
    hmm hab bei google was gefunden:
    http://forum.codenet.ru/archive/index.php/t-16448.html
    da setzt einfach (TColor) davor 🙂

    hmm bin gespannt obs nch ne lösung für das nudelgericht gibt 🙂





  • Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten