AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia FMX auf Bitmap invertiert zeichnen

FMX auf Bitmap invertiert zeichnen

Ein Thema von luisk · begonnen am 20. Apr 2016 · letzter Beitrag vom 23. Apr 2016
Antwort Antwort
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#1

FMX auf Bitmap invertiert zeichnen

  Alt 20. Apr 2016, 22:24
Hallo,
wie kann ich auf einem FMX Bitmap invertiert zeichnen,
so dass sich eine Linie oder ein Kreis farblich immer vom Hintergrund abhebt ?

bei VCL ging es z.B. so:
http://docwiki.embarcadero.com/CodeE...aphicsTPenMode
Delphi-Quellcode:
 image1.canvas.Pen.Mode:=pmNotXOR;
 image1.Canvas.MoveTo(0,0);
 image1.Canvas.LineTo(100,100);

Geändert von luisk (20. Apr 2016 um 23:24 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.434 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FMX auf Bitmap invertiert zeichnen

  Alt 21. Apr 2016, 13:24
Das Stichwort wäre XOR Brush.
Scheint es aber so in Fmx nicht zu geben, müsste man wohl schlimmstenfalls selber nachbauen.

http://stackoverflow.com/questions/1...d-cursor-color

https://delphiscience.wordpress.com/...ng/firemonkey/

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
492 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: FMX auf Bitmap invertiert zeichnen

  Alt 21. Apr 2016, 16:29
Hallo,

sollte das nicht auch mit einer eigenen Matrix funktionieren?
Kenne mich damit leider nicht aus, habe jedoch ein mal was dazu gelesen, finde aber nicht viel dazu im Internet.

http://stackoverflow.com/questions/1...ey-rotate-text
http://www.delphipraxis.net/177311-f...uf-canvas.html

Freundliche Grüsse
Milos

Geändert von milos (21. Apr 2016 um 17:26 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.434 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: FMX auf Bitmap invertiert zeichnen

  Alt 21. Apr 2016, 18:43
Xor ist für den Schreibmode uf dem Canvas.
Das hat mit Matrix erstmal nichts zu tun.

Malst du ein Pixel kannst du normalerweise das alte überschreiben,
oder mit XOR die Pixelfarbe "umdrehen".

http://mrcoles.com/blog/canvas-compo...emo-animation/

Ist zwar kein Delphi, aber kann man schön mit rumspielen


Edit:

http://www.delphipages.com/forum/sho...d.php?t=204385

Rollo

Geändert von Rollo62 (21. Apr 2016 um 18:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#5

AW: FMX auf Bitmap invertiert zeichnen

  Alt 22. Apr 2016, 18:06
das ist doch auch VCL.

Was meinen eigentlich die FMX-Profis hier an Bord
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.434 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: FMX auf Bitmap invertiert zeichnen

  Alt 22. Apr 2016, 20:23
Ja sorry, das war eher als Antwort für Milos gedacht

Ich vermute das man unter Fmx die Bitmaps selber anfassen und xor'ren muss.

Mit Map/Unmap, es sein denn jemand kommt mit einer besseren Idee (GPU-accelerated-crossplatform-compatible-code).

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.300 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: FMX auf Bitmap invertiert zeichnen

  Alt 23. Apr 2016, 10:33
Ich würde versuchen, mich hier mal von dem VCL-Ansatz zu lösen und Dinge auf dem Firemonkey-Way zu erledigen.

Statt hier auf die Bitmap-Pixel-Ebene herabzusteigen, würde ich lieber vorhandene Mittel aus dem Firemonkey-Baukasten verwenden.

Geht es wie hier anscheinend darum, ein zu zeichnendes Objekt sichtbar zu halten, auch wenn es die gleiche Farbe wie der Hintergrund hat, könnte man z.B. nur während des Zeichnungsvorgangs einen Gloweffect für das Objekt (z.B. TLine) verwenden, der dann die Umrisse vor dem Hintergrund abhebt.

Anliegend mal ein Screenshot, der das verdeutlicht. Hier wird gerade eine schwarze Linie gezeichnet, die sich erkennbar auch vor dem schwarzen Hintergrund abhebt (Anmerkung: Diese Funktionalität ist in der öffentlichen MAC-Version des PixPower-Editors neben anderen Dingen noch nicht drin).
Miniaturansicht angehängter Grafiken
invert.jpg  
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.434 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: FMX auf Bitmap invertiert zeichnen

  Alt 23. Apr 2016, 10:50
Hallo Harry,

auch gute Idee.

Aber einen Firemonkey-Way habe ich auch noch, über Filter

Habe nicht reingeschaut, aber ich würde schwören das hier intern auch XOR verwendet wird.
Würde sich vielleicht lohnen mal zu sehen was im Code passiert.

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.300 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: FMX auf Bitmap invertiert zeichnen

  Alt 23. Apr 2016, 11:18
Das nutze ich auch, wenn ich z.B. eine ganze Bitmap invertieren will.

Allerdings ist es mit einem einfachen XOR nicht getan. FMX verwendet hier einen PixelShader, Einzelheiten kann man sich in der Unit "FMX.Filter.Standard" ansehen (nach "invert" suchen).
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf