Bereiche in einem Bild "markieren"



  • Huhu,

    Ich suche einen Weg um auf einem Bild, einer Abbildung einer Tastaltur, Markierungen der einzelnen Tasten zu realisieren. Es soll über ein Memo ein Buchstabe eingelesen werden und dann soll auf dem Bild dieser Buchstaben irgentwie markiert / hervorgehoben werden. Am liebsten ohne externe grafik Libs ausser natürlich VCL.

    Bin noch eher neu in VCL, benutze Version 6.

    Danke schonmal

    Fy~



  • mit Canvas->... kannst du zeichnen, wie du die richtige Position findest, musst du dir selbst überlegen.

    greetz KN4CK3R



  • Danke das hat mir sehr geholfen.
    Jetzt müsste ich nur noch das Gemalte wieder löschen. Aber ich find nicht wirklich einen Befehl mit dem ich das hinbekomm 😞

    Fy~



  • Welcher Komponente gehört das Canvas auf dem du zeichnest?



  • Ähm ein "TImage" da hab ich das Bild reingeladen und da will ich drauf zeichnen. Ist das die Komponente? ^^

    Ansonsten ist das bisher mein Code

    //Initalisierung der Grafik Objekte
            TCanvas *pCanvas = Game3_Form->Canvas;
            Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
    
            pCanvas->Pen->Width = 8;                //Dicke des Rechteckes
            pCanvas->Pen->Color = clBlack;          //Farbe
            pCanvas->Brush->Style = bsClear;        //"Füllung"
    
            //"Löschen" des alten Rechteckes
            pBitmap->LoadFromFile("C:\\Users\\Fy\\Deskto\\10fingersystemqwertz2.bmp");
            Game3_Form->Canvas->Draw(20,328+20,pBitmap);
    
    pCanvas->Rectangle(130, 470, 130+53, 470+53);
    

    Hab das "Löschen" jetzt so hinbekommen das ich das Bild immer wieder überzeichne. Das scheinnt mir zwar nicht effektiv zu sein aber funktioniert. Oder gibts da noch ne Funktion mit ders leichter geht?

    Fy~



  • Bei TImage wird das gezeichnete über Canvas gespeichert.
    Somit bleibt dir nichts anderes übrig als den ganzen Buffer zu löschen oder überzeichnen.

    Du kannst aber zB auch TPaintBox nutzen.
    Dort kannst du das Erreignis OnPaint nutzen, um deine Daten selber zu zeichnen.
    zB:

    void __fastcall TForm4::PaintBox1Paint(TObject *Sender)
    {
       PaintBox1->Canvas->Draw(20,328+20,pBitmap);   // dein Bild
       if(true)   // Rect Zeichnen oder nicht..
       {
    	PaintBox1->Canvas->Brush->Color = clRed;
    	PaintBox1->Canvas->Rectangle(6,6,19,19);
       }
    
    }
    


  • kannst auch zwei Images übereinander legen. In das untere lädst du dein Bild und das obere machst du transparent und dadrauf zeichnest du dann.

    greetz KN4CK3R



  • Hallo,

    Wenn du z.Bsp. einen Rahmen malen willst den du wieder löschen kannst ohne das Bild neu aufzubauan dann musst du nur TPen::Mode auf pmNot setzen.
    Beim ersten Mal zeichnen siehst du den Rahmen. Wenn du noch mal darüber zeichnest ist er wieder weg.



  • Hi,

    wenn ich mich noch richtig an den Tischer erinnere ist da pmXor besser geeignet.

    Gruß Mümmel


Log in to reply