AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Image einfärben

Offene Frage von "MoBe13"
Ein Thema von MoBe13 · begonnen am 15. Feb 2014 · letzter Beitrag vom 15. Feb 2014
Antwort Antwort
MoBe13

Registriert seit: 15. Dez 2013
11 Beiträge
 
#1

Image einfärben

  Alt 15. Feb 2014, 01:01
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.146 Beiträge
 
Delphi 12 Athens
 
#2

AW: Image einfärben

  Alt 15. Feb 2014, 01:44
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
MoBe13

Registriert seit: 15. Dez 2013
11 Beiträge
 
#3

AW: Image einfärben

  Alt 15. Feb 2014, 01:52
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.146 Beiträge
 
Delphi 12 Athens
 
#4

AW: Image einfärben

  Alt 15. Feb 2014, 02:11
Der Code macht aus dem Bild ein Grau-Abbild, aber gibt das nur als Rot-Kanal zurück.

- Trunc(B*0.11+G*0.59+R*0.3) = Grau, wie die Augen des Mensch die Farbkanäle in ihrer Helligkeit bewerten
- RGB(Gr, 0, 0) statt RGB(Gr, Gr, Gr) ... Gr = Grau


Du hast schon die einzelnen Farbkanäle R, G und B,
rechnest diese "einzeln" um
und dann kommen sie via RGB(R, G, B) wieder zusammen.

PS: Statt mit Prozenten, könnte man hier auch ganzzahlig mit 255, bzw. 256 und via * und div rechnen, da die Farbkanäle jeweils Werte von 0 bis 255 enthalten.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.

Geändert von himitsu (15. Feb 2014 um 02:18 Uhr)
  Mit Zitat antworten Zitat
MoBe13

Registriert seit: 15. Dez 2013
11 Beiträge
 
#5

AW: Image einfärben

  Alt 15. Feb 2014, 02:36
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

Geändert von MoBe13 (15. Feb 2014 um 02:51 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Image einfärben

  Alt 15. Feb 2014, 03:07
und was bezeichnet 'C'?
Steht doch bereits im Procedure-Kopf:

procedure Faerben(C:TCanvas); 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 Delphi-Treff.

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.
  Mit Zitat antworten Zitat
MoBe13

Registriert seit: 15. Dez 2013
11 Beiträge
 
#7

AW: Image einfärben

  Alt 15. Feb 2014, 13:04
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?
  Mit Zitat antworten Zitat
MoBe13

Registriert seit: 15. Dez 2013
11 Beiträge
 
#8

AW: Image einfärben

  Alt 15. Feb 2014, 15:23
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.
  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 14:19 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