![]() |
BW Film Source
Liste der Anhänge anzeigen (Anzahl: 2)
Vielleicht kann es der eine oder andere verwenden
Anhand der vorgegebenen "Farbe" wird ein graues Bild erzeugt
Delphi-Quellcode:
function BW_Film(Bild : TBitmap; hell,farbe : integer):boolean;
type TRGBArray = array[0..0] of TRGBTriple; PRGBArray = ^TRGBArray; var x,y,r,g,b,summe,grau : integer; row : PRGBArray; begin result := false; Bild.Pixelformat := pf32bit; r := GetRValue(farbe); //RGB Farben zuweisen g := GetGValue(farbe); b := GetBValue(farbe); summe := r + g + b; //Gesamtsumme bilden if summe = 0 then summe := 1; //Divide zero vermeiden for y := 0 to Bild.Height-1 do begin Row := Bild.Scanline[y]; for x := 0 to Bild.Width - 1 do with row[x] do begin //grau anteilig ermitteln //farbwert / gesamtsumme = Anteil der einzelnen Farbe * tatsächlichen wert grau := round(r / summe * rgbtRed + g / summe * rgbtGreen + b / summe * rgbtBlue + hell); if grau > 255 then grau := 255; //Bereichscheck if grau < 0 then grau := 0; rgbtRed := grau; //neue Farbe zuweisen rgbtGreen := grau; rgbtBlue := grau; end; end; result := true; end; |
AW: BW Film Source
Nur das man es so nicht verwenden kann.
Row ist nicht definiert BMP0 ist nicht definiert Bild wird nicht benutzt hell, farbe doppelt definiert |
AW: BW Film Source
Und wenn Bild keine 24 Bit pro Pixel besitzt, dann läuft es auch nicht.
|
AW: BW Film Source
ihr habt recht, sollte jetzt passen
|
AW: BW Film Source
TRGBTriple?
TRGBTriple ist in jedem Delphi vorhanden? (in älteren hab ich jetzt noch nicht nachgesehn) Hach, wie ich mir wünschen würde, wenn in der OH erwähnt würde, wann etwas eingeführt wurde, so wie man es vom MSDN kennen täte. Tipp:
Delphi-Quellcode:
[0..0] hat eine besondere Bedeutung.
type
TRGBArray = array[0..0] of TRGBTriple; Delphi führt bei sowas nie eine Bereichsprüfungen durch, womit das quasi ein offenses statisches Array ergibt, welches mit 0 beginnt und kein Ende besitzt. (OK, unter Win32 ist bei 2 GB Schluß) |
AW: BW Film Source
>TRGBTriple ist in jedem Delphi vorhanden?
Ist kein direkter Bestandteil von Delphi sondern von Windows (SDK), müsste Theoretisch mit weniger aktuellen Delphi (5 / 7 / 2009 / XE / XE2) oder Windows Versionen funktionieren >unter Win32 ist bei 2 GB Schluß JAIN, hängt davon ab wieviel Speicher am Stück freigegeben wird |
AW: BW Film Source
Ich bin ja nicht kleinlich, aber sollte eine Funktion nicht einen Rückgabe- bzw. Ergebnistyp haben? :-D
Delphi-Quellcode:
Gruß Thomas
function BW_Film(Bild : TBitmap; hell,farbe : integer);
|
AW: BW Film Source
np, wenn dann richtig :)
|
AW: BW Film Source
Zitat:
Deine Funktion gibt nun entweder True zurück, oder nichts (es gibt eine Exception). Fazit: Das ist eine Prozedur. = Sinnlose Rückgabewerte sind nutzlos. |
[OT]
Zitat:
Gruß Michael |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 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