HI Markus,
1. du willst die Durchschnittsfarbe eines Fensters herausfinden. Warum benützt du dazu das Bildschirm-Seitenverhältniss? Ich schlage schrittweises Abtasten
ohne Seitenverhältniss vor.
2. Redmond kennt weder
rgb_threshold noch
changeRGB.
3. wo ich doch grade von Seitenverhältniss spreche:
Delphi-Quellcode:
changeRGB(Round(i_gesRed / (round(c_aspectorato*c_vertical)*c_vertical)),
Round(i_gesGreen / (round(c_aspectorato*c_vertical)*c_vertical)),
Round(i_gesBlue / (round(c_aspectorato*c_vertical)*c_vertical)));
Mit deiner rechnerei kann da (glaub ich mal so ganz einfach) nichts rauskommen. Ich tippe, es müsste so heißen:
Delphi-Quellcode:
changeRGB(Round(i_gesRed / (i_width*i_height)),
Round(i_gesGreen / (i_width*i_height)),
Round(i_gesBlue / (i_width*i_height)));
Die Schleifen sind davon natürlich auch betroffen:
Delphi-Quellcode:
for i_tmp_x := 1 to i_width do
begin
for i_tmp_y := 1 to i_heigth do
begin
Sonstige Speicherfehler kann ich keine entdecken. Falls du wirklich nicht weiterkommst, mach mal einen Schrittweisen durchgang und such das Speicherloch oder häng mal
FastMM rein.
Was natürlich auch sein kann, ist, dass du zu viel Speicher durch zu große Zahlen belegst. Nimm für i_gesRed, i_gesGreen, i_gesBlue mal Int64, um einen größeren Bereich abzudecken.
Bernhard