Füllen Sie benutzerdefinierten Bereich mit Farbe
Wie kann ich füllen den ausgewählten Bereich mit Farbe?
var Rect: TRect;
Color: TColor;
begin
//fill area with color
end;
InformationsquelleAutor Little Helper | 2011-11-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie nicht gesagt, was du damit meinst benutzerdefinierten Bereich und Sie sprechen von einer "gewählten Bereich". Ich weiß nicht, was du meinst.
Für ein einfaches Rechteck dann normalerweise füllen Sie das Rechteck mit
TCanvas.FillRect
.wo
R
ist einTRect
Angabe des Rechtecks.Für eine komplexere region, dann müssen Sie fallen zurück auf die Windows-GDI-Funktion
FillRgn
. Diese Funktion ist nicht eingewickelt durchTCanvas
aber Sie können nennen Sie es einfach vorbeiTCanvas.Handle
alsHDC
.ExtFloodFill
FunktionIch glaube nicht, dass. Es ist ein guter Vorschlag obwohl. Flood fill ist ein bisschen anders aus FillRect/FillRgn, aber könnte hier passen.
InformationsquelleAutor David Heffernan
Benötigen Sie ein VIEL mehr spezifisch, aber das sollte erhalten Sie gehen in die richtige Richtung:
EDIT:
Ich würde so mehr empfehlen, mit einem TRect-statt der 4-Koordinaten (Links, Oben, Rechts und Unten), weil eine TRect-enthält alle 4 von diesen bereits. Lesen Sie auch ein TRect mit einem TopLeft TPoint und BottomRight TPoint.
(Ich auch Fix einen Tippfehler oben
Canvas.FillRect(R);
sein sollte, warCanvas.FillRect(Rec);
)Hier ist eine andere version der gleichen Prozedur:
Viel einfacher, nicht wahr?
NOCH EIN EDIT:
Beachten Sie auch die Funktion bin ich mit
Rect(Left, Top, Right, Bottom)
- Das macht die Dinge einfach zu. Leider habe ich gesehen, einige standard-VCL-Steuerelemente die Ereignisse mit Parameter namensRect: TRect;
was vermasselt die Fähigkeit, um die ursprüngliche Funktion in derclasses
Einheit. So vermeiden Sie auch die Verwendung einer Variablen mit dem NamenRect
weil es verhindert, dass Sie in der Lage, verwenden Sie dieRect
- Funktion (die dreht sich 4 Zeilen code in nur 1).Anstatt zu kommentieren auf Ihre eigene Antwort, können Sie einfach Bearbeiten. Es ist ein wiki. In der Tat kann jeder Bearbeiten Ihre Antwort.
Ja, das weiß ich, ich war ziemlich in Eile, wenn ich Links, Kommentar, Bearbeitung...
InformationsquelleAutor Jerry Dodge