AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TCanvas.RoundRect nur teilweise farbig ausfüllen
Thema durchsuchen
Ansicht
Themen-Optionen

TCanvas.RoundRect nur teilweise farbig ausfüllen

Ein Thema von s-off · begonnen am 15. Nov 2007 · letzter Beitrag vom 15. Nov 2007
Antwort Antwort
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
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: TCanvas.RoundRect nur teilweise farbig ausfüllen

  Alt 15. Nov 2007, 13:33
Hallo.

Ich weiß nicht, ob ich dein Problem richtig verstanden habe, aber eventuell wäre es einfacher, mit Create...Region und SelectObject dem Canvas eine Art Maske zuzuweisen, und auf der zu Zeichnen.
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#3

Re: TCanvas.RoundRect nur teilweise farbig ausfüllen

  Alt 15. Nov 2007, 13:54
Da smit den Regions schaue ich mir mal an.

Aber es müsste doch auch mit FloodFill gehen, oder? Habe dazu mal einen separaten Thread aufgemacht.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz