![]() |
Image einfärben
Hallo zu später Stunde,
ich versuche mich gerade am Einfärben von Images und habe dazu schon diverse Threads gelesen. Ich verstehe leider keinen der Quelltexte/Vorgehensweisen, deshalb würde es mich freuen, wenn mir das jemand Schritt für Schritt erklären könnte. Es wäre super wenn ich angeben kann, wie stark das Image eingefärbt werden soll (in Prozent). Vielen Dank, MoBe |
AW: Image einfärben
Tja, wenn wir jetzt wüssten was du gelesen hast und welche Variante dir gefallen hat und was daran oder wo nun das Problem ist?
Mathe? neueFarbe = alteFarbe * (100 - Prozent) + neueFarbe * Prozent |
AW: Image einfärben
Dieser Bursche ist glaub ich am angenehmsten...
Prozentrechnung beherrsche ich -> jetzt muss ich nur noch den Wert kennen, den ich malträtieren darf
Delphi-Quellcode:
procedure Faerben(C:TCanvas);
var x, y: integer; Color: LongInt; R, G, B, Gr: Byte; begin with C do for x:= ClipRect.Left to ClipRect.Right do for y:= ClipRect.Top to ClipRect.bottom do begin Color:=ColorToRGB(Pixels[x,Y]); R := GetRValue(Color); G := GetGValue(Color); B := GetBValue(Color); Gr := Trunc(B*0.11+G*0.59+R*0.3); Pixels[x,Y]:=RGB(Gr,0,0); end; end; |
AW: Image einfärben
Der Code macht aus dem Bild ein Grau-Abbild, aber gibt das nur als Rot-Kanal zurück.
-
Delphi-Quellcode:
= Grau, wie die Augen des Mensch die Farbkanäle in ihrer Helligkeit bewerten
Trunc(B*0.11+G*0.59+R*0.3)
-
Delphi-Quellcode:
statt
RGB(Gr, 0, 0)
Delphi-Quellcode:
... Gr = Grau
RGB(Gr, Gr, Gr)
Du hast schon die einzelnen Farbkanäle R, G und B, rechnest diese "einzeln" um und dann kommen sie via
Delphi-Quellcode:
wieder zusammen.
RGB(R, G, B)
PS: Statt mit Prozenten, könnte man hier auch ganzzahlig mit 255, bzw. 256 und via
Delphi-Quellcode:
und
*
Delphi-Quellcode:
rechnen, da die Farbkanäle jeweils Werte von 0 bis 255 enthalten.
div
|
AW: Image einfärben
Ok danke. Soweit versteh ichs.
Ich hab noch drei Fragen: Wo weise ich das Image zu? (mit ClipRect?) und ist es auch möglich die Farbkanäle unterschiedlich 'stark' anzusprechen und somit einen Übergang zwischen Rot und Grün zu schaffen? und was bezeichnet 'C'?
Delphi-Quellcode:
begin
with C do |
AW: Image einfärben
Zitat:
Delphi-Quellcode:
Canvas ist deine Zeichenfläche. Die Klasse TCanvas stellt dir Methoden zum Zeichnen zur Verfügung. Weitergehende Informationen findest du in deiner Onlinehilfe oder z.B. beim
procedure Faerben(C:TCanvas);
![]() Ich würde übrigens dringend davon abraten, Code aus dem Internet, den man nicht versteht, einfach zu kopieren und in eigene Anwendungen einzubauen, denn dabei lernt man meistens nichts. Als weitaus nachhaltiger hinsichtlich des Erlernens einer Programmiersprache hat es sich erwiesen, entsprechende Tutorials durchzuarbeiten, um die Funktionsweise der Komponenten, Methoden und Klassen, die benötigt werden, auch verstehen zu lernen. |
AW: Image einfärben
Danke, ich habe den Procedure-Kopf übersehen...
Ich bin was das Lernen eine Programmiersprache betrifft aus deiner Seite, muss aber gestehen, dass mir für jegliche Grafikfunktionen einfach der Nerv fehlt - möglicherweise kommt das, wenn ich den Rest einwandfrei beherrsche! Für mein aktuelles Programm brauche ich das allerdings und ich möchte nicht drauf verzichten! Wie ist das mit dem Übergang von 2 Farben? Wäre das mit diesem Code realisierbar? |
AW: Image einfärben
Okay es funktioniert alles!
Es wäre super wenn mir jetzt noch jemand den Wert zeigen könnte mit dem ich die Stärke des Filters ändern kann, bzw. den gewünschten Übergang von Rot zu Grün erzeugen kann. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz