AGB  ·  Datenschutz  ·  Impressum  







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

Alphablend bei Farben

Ein Thema von Neutral General · begonnen am 23. Feb 2007 · letzter Beitrag vom 24. Feb 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Neutral General
Neutral General

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

Alphablend bei Farben

  Alt 23. Feb 2007, 15:14
Hi,

Also ich will keine ganzen Bitmaps aufeinander blenden sondern nur zwei TColors... Also sowas in der Art wie:

function Alpha(C1,C2: TColor; Alpha: Byte): TColor; wobei C2 auf C1 geblendet werden soll mit dem "Alpha"-Wert.

Gibts sowas ?
Habs bisher so gemacht das ich zwei mini-Bitmaps übereinander geblendet habe mit den jeweiligen Farben und Alphawerten und dann

Result := Bitmap1.Canvas.Pixels[0,0]; Aber das ist -->ARSCH<-- langsam

Wäre über ne gute Lösung dankbar

Gruß
Neutral General
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
elundril

Registriert seit: 11. Feb 2007
Ort: Wien
74 Beiträge
 
#2

Re: Alphablend bei Farben

  Alt 23. Feb 2007, 15:18
R1+R2/2
G1+G2/2
B1+B2/2

denk ich! hab ich mal auf einer seite gesehen.

lg el
Michael
Bombing for peace is like fu**ing for virginity.
--------------
Tausend Lemminge können sich nicht irren.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

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

Re: Alphablend bei Farben

  Alt 23. Feb 2007, 15:20
Zitat von elundril:
R1+R2/2
G1+G2/2
B1+B2/2

denk ich! hab ich mal auf einer seite gesehen.

lg el
Und wie stellt man dabei die Transparenz ein ?
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
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Alphablend bei Farben

  Alt 23. Feb 2007, 15:21
Zitat von Neutral General:
Zitat von elundril:
R1+R2/2
G1+G2/2
B1+B2/2

denk ich! hab ich mal auf einer seite gesehen.

lg el
Und wie stellt man dabei die Transparenz ein ?
(A*R1+(255-A)*R2)/255

Dann könntest du den Alphawert ganz normal von 0 bis 255 regeln...
  Mit Zitat antworten Zitat
elundril

Registriert seit: 11. Feb 2007
Ort: Wien
74 Beiträge
 
#5

Re: Alphablend bei Farben

  Alt 23. Feb 2007, 15:24
SRY!!! habs falsch verstanden. aber das hab ich auch schon mal irgendwo gelesen!

lg el
Michael
Bombing for peace is like fu**ing for virginity.
--------------
Tausend Lemminge können sich nicht irren.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Alphablend bei Farben

  Alt 23. Feb 2007, 15:50
anstelle von
(255-A)
geht auch
not(A)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

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

Re: Alphablend bei Farben

  Alt 23. Feb 2007, 15:55
Zitat von SirThornberry:
anstelle von
(255-A)
geht auch
not(A)
Da bekomme ich falsche Farben...
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
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Alphablend bei Farben

  Alt 23. Feb 2007, 16:16
Dann ist dein A nicht vom Type Byte
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

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

Re: Alphablend bei Farben

  Alt 23. Feb 2007, 16:34
Zitat von SirThornberry:
Dann ist dein A nicht vom Type Byte
ups

Delphi-Quellcode:
const
  COLOR_GROUND = TColor($00004080);
  COLOR_GROUND_R = Byte(COLOR_GROUND);
  COLOR_GROUND_G = Byte(COLOR_GROUND shr 8);
  COLOR_GROUND_B = Byte(COLOR_GROUND shr 16);

function TTile.GetAlphaColorValue(Current,Max: Word): TColor;
var p: Single;
    r,g,b: Byte;
    i: Byte;
begin
  p:= Current / Max;
  p:= p*255;
  i:= round(p);

  r:= GetRValue(FBColor);
  g:= GetGValue(FBColor);
  b:= GetBValue(FBColor);

  RGB((i*R+(not i)*COLOR_GROUND_R) div 255,
      (i*G+(not i)*COLOR_GROUND_G) div 255,
      (i*B+(not i)*COLOR_GROUND_B) div 255);
end;
So. Das ist im Moment meine Function. Die funktioniert auch, ABER das muss schneller!

Weil:

Delphi-Quellcode:
procedure TForm1.PaintMap;
var x,y: Integer;
    P: PRGBTriple;
begin
    for y:= 0 to High(FMap) do
    begin
      P := FBitmap.ScanLine[y];
      for x:= 0 to High(FMap[y]) do
      begin
        P^.rgbtRed := GetRValue(FMap[y,x].Color); // Der Setter von Color ruft GetAlphaColorValue auf
        P^.rgbtGreen := GetGValue(FMap[y,x].Color);
        P^.rgbtBlue := GetBValue(FMap[y,x].Color);
        inc(P);
      end;
    end;
    Image1.Picture.Bitmap.Assign(FBitmap);
end;
Und wenn ich so ein 1024*768 Bild male dann dauert das (fast) ne halbe Sekunde.. aber ich will das Bild mindestens jede halbe Sekunde malen *g*. Wie kann man das ganze am besten optimieren?

Gruß
Neutral General
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
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Alphablend bei Farben

  Alt 24. Feb 2007, 01:48
ich denke die meiste Zeit geht in der Zeile verloren:
Image1.Picture.Bitmap.Assign(FBitmap); hast du mal geprüft wie lange diese Funktion benötigt?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:18 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