Einzelnen Beitrag anzeigen

Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: 5x5-Blur bzw. "Antialiasing"

  Alt 27. Nov 2003, 15:52
Zitat:
Der Unterschied ist das mit TRGBTriple es lesbarer wird.
Naja okay. Ich persönlich finde es so schöner. Über Geschmack lässt sich ja bekanntlich nicht streiten .

Zitat:
Ich seh gerade noch mehrere Fehler.
Die Schleifen sollten doch wohl bis Width-3 bzw Height-3 laufen.
Probier's doch mal aus. Dann läufst du über die Zeilenenden bzw. Spaltenenden. Bei der y-Schleife fange ich bei 2 an damit sich das Zielbild nicht nach oben verschiebt. Ist schon in Ordnung so. Man muss halt nur meine Anmerkung beachten: Die Ränder (2 Pixel breit) werden ausgelassen und Zeit zu sparen.

Zitat:
Die Groesse des Zielbildes sollte gesetzt werden.
Das Zielbild wird als Parameter übergeben und ist somit bereits definiert.

Aufruf z.B.:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var bmp1, bmp2 : TBitmap;
begin
  bmp1 := TBitmap.Create;
  bmp1.Width := 800;
  bmp1.Height := 600;
  bmp1.PixelFormat := pf24Bit;

  bmp2 := TBitmap.Create;
  bmp2.Width := 800;
  bmp2.Height := 600;
  bmp2.PixelFormat := pf24Bit;

  AntiAlias5(bmp1, bmp2);
end;
Zitat:
Öhm. Könntest du deine Codeformatierung etwqas an den Objeect Pascal Style Guide anpassen?
Öhm. Wo genau ist dein Problem?
Etwa hier?
Delphi-Quellcode:
        Po^[1] := round((( P1^[4]+P1^[7]+P1^[10] +
                          P2^[1] +P2^[13]+
                          P3^[1] +P3^[13]+
                          P4^[1] +P4^[13]+
                                 P5^[4]+P5^[7]+P5^[10]) / AntAussen)+ // Äussere Region

                               ((P2^[4]+P2^[7]+P2^[10] +
                                 P3^[4] +P3^[10] +
                                 P4^[4]+P4^[7]+P4^[10]) / AntMitte)+ // Mittlere Region

                                       (P3^[7] / AntInnen)); // Zentrum
Das hab ich mit vollster Absicht so gamcht, damit man die grafische vorstellung gleich mit im Code hat. Von mir aus kann man aber auch so schreiben:
Delphi-Quellcode:
Po^[1] := round(((P1^[4]+P1^[7]+P1^[10]+P2^[1]+P2^[13]+P3^[1]+P3^[13]+P4^[1]+P4^[13]+P5^[4]+P5^[7]+P5^[10]) / AntAussen)+
                ((P2^[4]+P2^[7]+P2^[10]+P3^[4]+P3^[10]+P4^[4]+P4^[7]+P4^[10]) / AntMitte)+
                 (P3^[7] / AntInnen));
Nur hilft das dem Verständnis dessen, was da passiert nicht wirklich weiter...

Oder isset, weil ich das "begin" auch noch eine Spalte einrücke? Oder weil "AntAussen" nicht "antAussen" heisst? Oder ist der Prozedurname ungünstig? "do5x5AA(bmp1, bmp2);" besser?

Wenn es überhaupt nicht den "optischen Ansprüchen" genügt, dann kann ich's natürlich ändern. Aber der Lesbarkeit hälfe das meiner Meinung nach nicht wirklich weiter. Ich will keinem an die Karre fahren! Nur wissen, wo jetzt genau der Knackpunkt ist.


gruss,
dizzy

\edit: Delphi-Tags korrigiert
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat