AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bitmap-Ausschnitt einfärben

Ein Thema von stahli · begonnen am 21. Feb 2014 · letzter Beitrag vom 21. Feb 2014
 
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Bitmap-Ausschnitt einfärben

  Alt 21. Feb 2014, 10:46
Mach das einfach mit Scanline... es ist nicht so kompliziert wie es sich vielleicht anhört.

Ich habs grad einfach mal aus dem Kopf runtergeschrieben, weil es glaub ich länger dauern würde, es mit Worten zu erklären, und dann immer noch unklarer wäre:
Delphi-Quellcode:
function Clamp(Value: Integer; Min, Max: Integer); inline;
begin
  Result := Value;
  if Result < Min then Result := Min;
  if Result > Max then Result := Max;
end;

procedure AdjustLuminance(Bmp: TBitmap; Offset: SmallInt)
  Bmp: TBitmap;
  Pixel: PRGBQuad;
  x,y: integer;
begin
  Bmp.PixelFormat := pf32Bit;
  for y := 0 to Bmp.Height - 1 do
  begin
    // Pointer auf 1. Pixel in der Zeile holen
    Pixel := Bmp.Scanline[y];
    for x := 0 to Bmp.Width - 1 do
    begin
      Pixel^.R := Clamp(Pixel^.R + Offset, 0, 255);
      Pixel^.G := Clamp(Pixel^.G + Offset, 0, 255;
      Pixel^.B := Clamp(Pixel^.B + Offset, 0, 255);

      // ein Pixel nach rechts gehen
      inc(Pixel);
    end;
  end;
end;
Delphi-Quellcode:
AdjustLuminance(Bmp, 50); // Aufhellen
AdjustLuminance(Bmp, -50); // Abdunkeln
Für PRGBQuad musst du irgendeine Unit einbinden, ich hab es grad nicht im Kopf, welche. Oder du deklarierst dir den Record einfach selbst:
Delphi-Quellcode:
type
  PRGBQuad = ^TRGBQuad;
  TRGBQuad = packed record
    B, G, R, A: Byte;
  end;
PS: Kann sein, dass Luminance hier formal gesehen der richtige Begriff ist. Aber für einen Hover-Effekt reicht es allemal, und wenn nicht, kann man die Berechnung in der Schleife ja einfach austauschen.
  Mit Zitat antworten Zitat
 


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 01:53 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 by Thomas Breitkreuz