Canvas Farbe ändern...

Snipero

Mitglied
Hallo Leute,
ich hoffe ihr könnt mir helfen!
Ich benutze ein Image als Zeichenfeld und möchte nun per Button die Canvas/Strich Farbe ändern.
Wenn ich allerdings auf den Button (In diesem Fall den Roten) diesen Code lege:

Code:
Image1->Canvas->Pen->Color = clRed ;

Dann passiert garnichts!
Die Strichfarbe bleibt weiterhin Schwarz...

Was mache ich falsch oder was muss ich ändern, bitte um Hilfe!

MFG:
Snipero2
 
Hallo,

du legst aber die Farbe vor dem Zeichnen der Linie(oder was auch immer) fest, oder?

Ansonsten müsste es eigentlich gehn.

Code:
     Image1->Canvas->Pen->Color = clRed;
     Image1->Canvas->MoveTo(100,50);
     Image1->Canvas->LineTo(50,50);
     Image1->Canvas->LineTo(50,100);
Das hier funktioniert bei mir...

MfG Turri
 
Ja, soweit funktionert das bei mir ja auch!
Aber ich habe den Strich auf dem Image feld von Mousdown zu MouseUp, der ja auch normal in Schwarz durchgeführt werden soll.

Nur wenn ich zwischen durch lediglich für einige Striche die Farbe wechseln möchte..
Ich habe mehrere Buttons (Rot Blau Grün...)

Und dein Beispiel ist nur für feste Positionen.

... :(
 
Quellcode des Image:

Code:
void __fastcall TForm1::Image12MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
StartX = X+9;
StartY = Y+39;
}

void __fastcall TForm1::Image12MouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
Canvas->MoveTo(StartX, StartY);
Canvas->LineTo(X+9, Y+39);
}

Und der des Buttons:

Code:
void __fastcall TForm1::Image9Click(TObject *Sender)
{
Image1->Canvas->Pen->Color = clRed ;
}
 
probiers mal so:

Code:
__fastcall TForm1::TForm1(TComponent* Owner)
     : TForm(Owner)
{
       c = clBlack;      // in die Header noch TColor c;
}

void __fastcall TForm1::Image12MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
      StartX = X+9;
      StartY = Y+39;
}

void __fastcall TForm1::Image12MouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
      Canvas->Pen->Color = c;
      Canvas->MoveTo(StartX, StartY);
      Canvas->LineTo(X+9, Y+39);
}

und der Button:
Code:
void __fastcall TForm1::Image9Click(TObject *Sender)
{
         c = clRed ;
}

Ich habs nich ausprobiert, aber vermute der hat so deinen Farbwechsel nur "vergessen".
Würdest du direkt im Button-Click Event noch irgendwas zeichen würde es funktionieren.
Durch die globale TColor c; Variable müsste er deine Farbe jetzt eigentlich immer und überall kennen :)
Bei deinen anderen Button's musst du das entsprechend anpassen.

MfG Turri
 
Ja, Perfekt!
Danke, genaus so habe ich das gedacht ;)

Ich habe es zwar auch schon einmal mit einer Variablen versucht, hatte diese allerdings als String deklariert ;) :)

MFG:
Snipero2
 
hi
falls es dich noch interessiert, wo der fehler lag:
die MouseUp und MouseDown-Prozeduren sind in Image12 und die farbänderung findet in Image1 statt. ausser du hast einen anderen code hier angegeben als du im builder hast^^
 
Zurück