AGB  ·  Datenschutz  ·  Impressum  







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

Digilabel Komponente mit coolem Effekt

Ein Thema von padavan · begonnen am 10. Okt 2006 · letzter Beitrag vom 12. Okt 2006
 
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Digilabel Komponente mit coolem Effekt

  Alt 12. Okt 2006, 07:26
Guten Morgen,

also noch mal zu diesem Thema.

Mit folgendem Code, habe ich das was ich ursprünglich wollte auch hinbekommen:

Delphi-Quellcode:
  procedure Antialiasing(const DC: TCanvas; const Rectangle: TRect; wiederhol: integer);

  type
    TRGBTripleArray = array[0..32768] of TRGBTriple;
    // 32768 = maximale Anzahl der Pixel in der Breite eines Bildes (also eine "ScanLine")
    pRGBTripleArray = ^TRGBTripleArray; // Pointer auf TRGBTripleArray

  var
    cx, cy: Smallint;
    r, g, b: Byte;
    Row1: pRGBTripleArray;
    Row2: pRGBTripleArray;
    Row3: pRGBTripleArray;
    TEMP: TBitmap;
    CurRect: TRect;

    i: shortint;
  begin
    TEMP := TBitmap.Create;
    try

      for i := 0 to wiederhol do
      begin
        with TEMP do begin
          Width := Rectangle.Right - Rectangle.Left;
          Height := Rectangle.Bottom - Rectangle.Top;
          CurRect := Rect(0, 0, Width, Height);
          PixelFormat := pf24Bit;
          Canvas.CopyRect(CurRect, DC, Rectangle);
          with Canvas do begin
            for cy := 1 to (Height - 2) do begin
              Row1 := ScanLine[cy - 1];
              Row2 := ScanLine[cy];
              Row3 := ScanLine[cy + 1];

              for cx := 1 to (Width - 2) do begin
                r := (Row1[cx - 1].rgbtRed+Row1[cx].rgbtRed+
                Row1[cx + 1].rgbtRed+
                Row2[cx - 1].rgbtRed+
                Row2[cx + 1].rgbtRed+
                Row2[cx - 1].rgbtRed+
                Row3[cx].rgbtRed+
                Row3[cx + 1].rgbtRed+
                Row3[cx].rgbtRed) div 9;

                g := (Row1[cx - 1].rgbtGreen+
                Row1[cx].rgbtGreen+
                Row1[cx + 1].rgbtGreen+
                Row2[cx - 1].rgbtGreen+
                Row2[cx + 1].rgbtGreen+
                Row2[cx - 1].rgbtGreen+
                Row3[cx].rgbtGreen+
                Row3[cx + 1].rgbtGreen+
                Row3[cx].rgbtGreen) div 9;

                b := (Row1[cx - 1].rgbtBlue+
                Row1[cx].rgbtBlue+
                Row1[cx + 1].rgbtBlue+
                Row2[cx - 1].rgbtBlue+
                Row2[cx + 1].rgbtBlue+
                Row2[cx - 1].rgbtBlue+
                Row3[cx].rgbtBlue+
                Row3[cx + 1].rgbtBlue+
                Row3[cx].rgbtBlue) div 9;
                Row2[cx].rgbtBlue := b;
                Row2[cx].rgbtGreen := g;
                Row2[cx].rgbtRed := r;
              end;
            end;
          end;
          DC.CopyRect(Rectangle, Canvas, CurRect);
        end;
      end;
    finally
      TEMP.Free;
    end;
  end;
Der Aufruf dazu:

    Antialiasing(Form1.canvas, Digilabel.BoundsRect, 1); wobei Digilabel natürlich meine Anzeige Komponente ist.

Nun habe ich das ja quasi in meinem Projekt umgesetzt, das ist aber doof, ordentlicher wäre ja,
das die Komponente selbst die Eigenschaft schon mitbringt.
Ich habe die Eigenschaft mal "smooth" genannt.
Wird ein Wert für smooth größer 0 angegeben, so soll die Eigenschaft ziehen.

So sieht das nun in der Komponente aus:

//dto. wie oben allerdings am Aufruf haperts:

    Antialiasing(Form1.canvas, self.BoundsRect, 1); denn hier habe ich ja nun keine Form1.
Habe es also so versucht, aber ohne Erfolg:
    Antialiasing(self.canvas, self.BoundsRect, 1);
Kann mir jemand sagen, wie ich das in Griff bekomme.

So ein Verzweiflungsversuch habe ich auchschon gestartet:

  Antialiasing(Parent.Brush.Create.Bitmap.Canvas, Digilabel.BoundsRect, 1);

Hüüüüüüülfeeee!!!




Edit:

das Problem ist übrigens nicht, dass was abstürzt, oder es eine Exception gäbe,
nein, es funktioniert halt nicht mit
Antialiasing(self.canvas, self.BoundsRect, 1);
  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 06:38 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