AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi GR32 bilder verdunkeln

GR32 bilder verdunkeln

Ein Thema von alienous · begonnen am 27. Aug 2006 · letzter Beitrag vom 27. Aug 2006
 
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: GR32 bilder verdunkeln

  Alt 27. Aug 2006, 14:41
Hi,
dein Problem ist (glaube ich) dass du die Funktionsweise von Scanline nicht richtig verstanden hast.
Eine Scanline ist einfach nur ein Zeiger auf das erste Byte der rohen Daten. Anders gesagt, du hast einfach den Zeiger auf ein Byte, Delphi weiß nicht was für eine Struktur du an dieser Stelle erwartest. Das ermöglicht dir einfach die max. Flexibilität. Du kannst hier eine beliebige Umwandlung vornehmen.
In deinem Fall wandelst du in ein PColor32Array. Das ist ein Zeiger auf eine Color32Array. Anders gesagt, du hast ein Array von TColor32 Werten. Ein TColor32 besteht aus 4 Byte. Die Kodierung findest du in der OH von der Graphics32.
Du musst jetzt für alle Kanäle (Alpha, Rot, Grün, Blau) die Helligkeit senken. Ein TColor 32 fässt diese 4 Byte zu einem 32 Bit Wert zusammen. Du musst also Byteweise ändern. Das kannst du mit einer entsprechenden Maske machen oder halt (transparenter) Byte weise.

Delphi-Quellcode:
procedure dunkler(Bitmap: TBitmap32; const dp: Byte = 10);
var
  PixelLine: pColor32array; //hier gibts problmeme, weiss nicht welchen typ ich hier angeben muss
  x, y: integer;
begin

  for y := 0 to Bitmap.height - 1 do
  begin
    PixelLine := Bitmap.ScanLine[y];
    for x := 0 to (Bitmap.width) - 1 do
       // für die drei Farbkanäle sähe das so aus:
       PixelLine[x].Red := PixelLine[x].Red - round(PixelLine^[x].Red / dp);
       PixelLine[x].Green := PixelLine[x].Green - round(PixelLine^[x].Green / dp);
       PixelLine[x].Blue := PixelLine[x].Blue - round(PixelLine^[x].Blue / dp);
  end;
end;
Gruß Der Unwissende
  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 17:23 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