Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: canvas.rectangle transparent?

  Alt 29. Apr 2016, 09:17
Prinzipiell kannst du mit Canvas.Rectangle und BrushStyle = bsClear ein Rechteck um den Text ziehen und dann per FloodFill den Hintergrund des Rechtecks einfärben ohne den im Rechteck enthaltenen Text zu übermalen. ABER wie Blup in seinem Post schon gesagt hat wird es aufgrund der halbtransparenten Pixel (bzw. Grauabstufungen am Rand der Buchstaben) wahrscheinlich etwas pixelig aussehen.

Mit Blups Code wirst du evtl ein besseres Ergebnis erzielen. Sein Algorithmus geht theoretisch auch mit Canvas.Pixels statt mit ScanLine, aber das ist sehr langsam.
Du könntest dir alternativ ein temporäres Bitmap in der Größe des Bereichs erstellen und mit Canvas.CopyRect oder BitBlt den Ursprungsbereich in ein Bitmap kopieren, dann mit Blups Algorithmus deine Änderung vornehmen und das Ergebnis in das Ursprungscanvas zurückkopieren.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat