Zeichenfläche (Canvas) bemalen und so...?
-
HalliHallo!
Ich hab da ein kleines Problem mit dem Canvas, der Zeichenfläche im Builder.
Die Canvas sollte mal mit einem Hintergrund bemalt werden. Dann sollten bestimmte Bereiche mit einer anderen Farbe eingefärbt werden. Zum Beispiel wie der Smiley hier:
-> Dieser hat als Hintergrundfarbe grau, und die eingefärbte Fläche ist seine rote Nase. So ungefähr wär das Prinzip, welches ich brächte. Wenn möglich bitte gleich Code posten.Ich Danke euch und verbleibe mit freundlichen Grüßen,
Mario (der andere)
-
Hallo
ich vermute du suchst sowas wie TCanvas::FloodFill.
bis bald
akari
-
Ja "FloodFill" das hatte ich bereits verwendet, jedoch funktioniert das nicht so wie ich mir das vorstelle:
PaintBox->Canvas->Rectangle(0,0,PaintBox->Width, PaintBox->Height); PaintBox->Canvas->FloodFill(50, 50, clBlue, fsSurface);In Bezug auf meinen ersten Beitrag hier war die Frage nach dem einfärben einer kleineren Fläche mit einer anderen Farbe (rote Nase des Smileys), doch das kann man mit FloodFill nicht lösen oder?
Ich danke euch,
mario
-
Hallo
funktioniert doch
Canvas->Pen->Color = clRed; Canvas->Rectangle(50, 50, 200, 200); Canvas->Rectangle(60, 60, 90, 90); Canvas->Brush->Color = clBlue; Canvas->FloodFill(100, 100, clRed, fsBorder);Jetzt werden ausgehend vom Punkt 100,100 alle Pixel die nicht clRed sind in clBlue gesetzt, solange bis Floodfill auf eine Begrenzung von clRed trifft.
bis bald
akari
-
Achja, jetzt funktioniert es, hatte es nicht bemerkt, da die Fläche mit dem gleichen Window-Fenster-Grau eingefärbt wurde:
So sieht mein code aus:
PaintBox->Canvas->Rectangle(0,0,PaintBox->Width, PaintBox->Height); PaintBox->Canvas->FloodFill(50, 50, clBlack, fsBorder);oder:
PaintBox->Canvas->Rectangle(0,0,PaintBox->Width, PaintBox->Height); PaintBox->Canvas->FloodFill(50, 50, clGray, fsSurface);Wie kann ich nun die Füllfarbe einstellen?
Dankeschön,
mario
-
Hallo
BCB-Hilfe schrieb:
Mit FloodFill können Sie unter Verwendung des aktuellen Pinsels einen (nicht unbedingt rechteckigen) Bereich des Bildes füllen.
Canvas->Brush->Color = clBlue; // Färbung auf Blaubis bald
akari
-
Danke akari für deine schnellen und hilfreichen Antworten.
Vielleicht hast du es übersehen, aber ich verwende nicht Form1->Canvas sondern PaintBox->Canvas. Jedoch gibt es hier sowas wie Brush->Color und Pen->Color nicht (bzw. ich habe es wiedereinmal übersehen - es sei mir bitte verziehen). Ich finde PaintBox wäre etwas praktischer, denn so kann ich meine PaintBox auf der FormMain nach belieben platzieren, ohne dass der Code (mit den Koordinaten) geändert werden muss (da es hier doch relative Angaben sind). Im Gegensatz dazu muss ich unter Verwendung von Form1->Canvas immer wieder die Koordinaten ändern, wenn ich die Zeichenfläche irgendwoanders platzieren möchte.
Vielen Dank,
mario
-
Hallo
ob du das Canvas eines Forms oder das einer Paintbox nimmst, ist egal. Alle TCanvas-Instanzen haben die gleichen Eigenschaften, auch Brush und Pen.
bis bald
akari
-
Also es geht hiermit:
PaintBox->Canvas->Rectangle(0,0,PaintBox->Width, PaintBox->Height); PaintBox->Canvas->Pen->Color = clRed; PaintBox->Canvas->Rectangle(60, 60, 90, 90); PaintBox->Canvas->Brush->Color = clBlue; PaintBox->Canvas->FloodFill(100, 100, clRed, fsBorder);Das Problem war: bei dieser ComboBox die erscheint wenn man den Pfeil schreibt "->", z.b. bei PaintBox->'ComboBox', gab es keinen Eintrag der Pen hieß oder Brush.
Hab das jetzt einfach von Hand geschrieben, dann gings. Also: PaintBox->Pens->"hier kommt die ComboBox wieder.
...zur Information.Des weiteren, kann ich einen Farbverlauf machen, z.b. einen Balken der links grün ist und rechts rot. Und dabei gibts einen schönen Übergang.
Danke,
mario
-
Hallo
gewöhn dir eben an, lieber erst manuell zu schrieben

Zum Thema Farbverlauf : Es gilt der Grundsatz "ein Thread ein Thema, ein Thema ein Tread.". Aber bevor du jetzt gleich einen neuenaufmachst, schau dir erst über die Forumssuche die bereits bestehenden Threads zum Beispiel zum Stichwort *verlauf* an
bis bald
akari
-
Mit dem Manuellschreiben hab ich oft Probleme, denn oft gibts ein paar Sachen (die ich nach dem "->" schreib) gar nicht.
Dann werd ich mal die Suche probieren, doch mit der Suche hab ich bisher keine so guten Erfahrungen gemacht.
Danke dir,
mario