Einzelnen Beitrag anzeigen

s-off
(Gast)

n/a Beiträge
 
#1

TCanvas.RoundRect nur teilweise farbig ausfüllen

  Alt 15. Nov 2007, 13:10
Hallo zusammen,

ich habe das Ziel, Grafiken im Stil der angehängten Screenshots zu zeichnen.

Beispiel 1:
kein Problem - Brush.Color auf den Blauton setzen und ein RoundRect zeichnen. Das Ausfüllen erfolgt automatisch.
Hinterher noch mit LineTo die Linien drüber und gut ist.
Delphi-Quellcode:
MyCanvas.Brush.Color := clBlue;
MyCanvas.RoundRect(iX1, iY1, iX1 + iX2, iY + iY2, iRundung, iRundung);
Beispiel 2:
Kriege ich gerade noch so hin, obwohl der Weg ziemlich umständlich ist
Delphi-Quellcode:
//ausgefülltes RoundRect oben zeichnen und Höhe um die Länge der Rundung erhöhen
MyCanvas.Pen.Color := StringToColor(sRahmenfarbe);
MyCanvas.Brush.Color := StringToColor(sHintergrundfarbe);
MyCanvas.RoundRect(iX1, iY1, iX1 + iX2, iY1 + iHöheFarbe + iRundung, iRounding, iRounding);

//Rechteck drübermalen, um innere Rundungen zu vermeiden
MyCanvas.Brush.Color := clNone;
MyCanvas.FillRect(Rect(iX1, iY1 + iHöheFarbe, iX1 + iX2, iY + iHöheFarbe + iRundung));

//unausgefülltes RoundRect zeichnen, um den Rahmen zu bekommen
MyCanvas.Brush.Color := clWhite;
MyCanvas.RoundRect(iX1, iY1, iX1 + iX2, iY + iY2, iRundung, iRundung);
Habe es auch mit FloodFill versucht, das haut aber irgendwie überhaupt nicht hin

Bei Beispiel 3 habe ich gar keinen Ahnung

Also,

zu 1 - sollte klar sein.
zu 2 - unschön - müsste doch auch besser gehen, oder?
zu 3 - geht soetwas überhaupt, ohne große Umstände? Und wenn ja - wie?

Edit: musste noch die Linien in die Bilder einfügen
Miniaturansicht angehängter Grafiken
beispiel1_723.jpg   beispiel2_800.jpg   beispiel3_207.jpg  
  Mit Zitat antworten Zitat