AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Zwei Farben "Alphablenden"
Thema durchsuchen
Ansicht
Themen-Optionen

Zwei Farben "Alphablenden"

Ein Thema von igel457 · begonnen am 9. Apr 2006 · letzter Beitrag vom 9. Apr 2006
Antwort Antwort
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#1

Zwei Farben "Alphablenden"

  Alt 9. Apr 2006, 18:19
Ich habe mal wieder ein kleines Problem. Ich möchte zwei Farben ineinander überblenden. Ungefähr so:

Delphi-Quellcode:
function Blend(col1,col2:TColor;alpha:byte);
begin
  result := ...
end;
Wenn Alpha 255 ist dann soll result := col1 sein, wenn Alpha 0 ist dann soll result := col2 sein.

Ich habe das vorher immer mit einer Schleife geregelt. Gibt es da nicht noch andere möglichkeiten?

Im Forum habe ich nichts gefunden.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Zwei Farben "Alphablenden"

  Alt 9. Apr 2006, 18:25
Es gibt die Functionen

Delphi-Quellcode:

GetRValue(Value:Tcolor):Byte;
GegGValue(Value:Tcolor):Byte;
GetBValue(Value:Tcolor):Byte;
Mit denen kannst du dir die RGB werte auslesen

das AUsrechen der neuen ist ja wohl hoffentlich nicht dein Problem.

Dann gibts nocht

rgb(r,g,b:Byte):Tcolor; Für die Rückrichtung.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Zwei Farben "Alphablenden"

  Alt 9. Apr 2006, 18:27
ja durch simple mathematik.

eine farbe ist nichts anderes als eine positon in einen würfel (3d raum).
die distanz zwischen den farben im raum ist dein alpha.

wenn du kein bock auf 3d-mathe hast dann kann du auch einfach für jede komponente (rgb) die distanz alleine ausrechnen.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Zwei Farben "Alphablenden"

  Alt 9. Apr 2006, 18:39
Doch, genau das ausrechnen ist mein Problem.
Neunte Klasse Mathemathik? - Da kommt man nicht sehr weit, ich denke nicht das dies mit einem Dreisatz zu schaffen ist.

Könntet ihr bitte mal verdeutlichen wie genau ihr das meint...
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: Zwei Farben "Alphablenden"

  Alt 9. Apr 2006, 18:45
Hat zwar etwas mit Vektoren zu tun, aber 5. Klasse sollte genügen .
Überleg mal: Angenommen, wir haben einen Rotwert R1 = 0 und einen zweiten R2 = 100. Nun willst die Werte mischen, wobei R2 60% Gewichtigkeit hat.
Nächster Fall: R1 = 10, R2 = 110, wieder 60% R2
Der Schritt zur allgemeinen Formel sollte nicht mehr schwer fallen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Zwei Farben "Alphablenden"

  Alt 9. Apr 2006, 18:50
Ok

Ich hoffe ich habe das jetzt richtig verstanden:

  r := r1*(1-1/255*alpha)+r2(1/255*alpha); Werde ich gleich ausprobieren...
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Phantom1

Registriert seit: 20. Jun 2003
282 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Zwei Farben "Alphablenden"

  Alt 9. Apr 2006, 19:13
Zitat von igel457:
Ok

Ich hoffe ich habe das jetzt richtig verstanden:

  r := r1*(1-1/255*alpha)+r2(1/255*alpha);
Ja so in etwa müsste es gehen, musste halt das ergebnis noch runden

oder du machst es so hier:
r:=(r1*alpha + r2*(not alpha)) shr 8; Dieser code dürfte auch um einiges schneller sein, da man hier nicht runden muss.

mfg
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#8

Re: Zwei Farben "Alphablenden"

  Alt 9. Apr 2006, 20:05
mach mit div oder mit round() sonst geht das nid
Nico Müller
  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 09:42 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