Einzelnen Beitrag anzeigen

thomas2009
(Gast)

n/a Beiträge
 
#4

AW: TImage32 Unit download

  Alt 1. Apr 2011, 17:28
Wenn in Delphi Bibliothek über Optionen anschaue, dann finde ich schon den Pfad zu image32 Component. d.h. Image32 ist bei mir schon installiert !
Aber wenn ich versuche das Projekt zu öffnen, erscheint diese Fehlermeldung :
Kasse TImage32 nicht gefunden. !
Was muss ich tun ?

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, GR32, GR32_Image, GR32_Transforms, GR32_Layers, StdCtrls,
  Buttons, ExtDlgs;

type
  TForm1 = class(TForm)
    Src: TImage32;
    Dst: TImage32;
    Dst2: TImage32;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

Uses JPeg;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Bitmap laden
  Src.Bitmap.LoadFromFile('SinCos-Mini.bmp');
  Dst.SetupBitmap;
  Dst2.SetupBitmap;
end;

{
  Im ersten Beispiel wird eine rechteckige Bitmap in ein Trapez verformt
}

procedure TForm1.Button1Click(Sender: TObject);
Var
  // Objekt für die Transformation
  PT: TProjectiveTransformation;
begin
  // Objekt für projektive Transformation erzeugen
  PT:=TProjectiveTransformation.Create;
  // Erstmal 4 Punkte definieren für das vierseitige konvexe Ziel-Polygon
  // Reihenfolge Oben/Linke, Oben/Rechts, Unten/Rechts, Unten/Links
  PT.X0:=30;
  PT.Y0:=0;
  PT.X1:=Src.Bitmap.Width-30;
  PT.Y1:=0;
  PT.X2:=Src.Bitmap.Width;
  PT.Y2:=Src.Bitmap.Height;
  PT.X3:=0;
  PT.Y3:=Src.Bitmap.Height;
  // Wichtig: Man muss in TProjectiveTransformation die Grösse
  // des Quell-Rechtecks definieren!
  PT.SrcRect:=FloatRect(0,0,Src.Bitmap.Width-1,Src.Bitmap.Height-1);
  Dst.BeginUpdate;
    // Gesamtes Bitmap mit transparenter Farbe löschen
    Dst.Bitmap.Clear(0);
    // Verformen
    Transform(Dst.Bitmap,Src.Bitmap,PT);
  Dst.EndUpdate;
  // und Anzeigen
  Dst.Invalidate;
  // Transformobjekt freigeben
  PT.Free;
  Button1.Enabled:=false;
  Button2.Enabled:=true;
end;

{
  Im zweiten Beispiel wird das Trapez "von Hand", also Punkt für Punkt, wieder
  in ein Rechteck verformt
}

procedure TForm1.Button2Click(Sender: TObject);
Var
  X,Y: Integer;
  P: TFixedPoint;
  // Objekt für die Transformation
  PT: TProjectiveTransformation;
begin
  // Objekt für projektive Transformation erzeugen
  PT:=TProjectiveTransformation.Create;
  // Erstmal 4 Punkte definieren für das vierseitige konvexe Quell-Polygon
  // Reihenfolge Oben/Linke, Oben/Rechts, Unten/Rechts, Unten/Links
  PT.X0:=30;
  PT.Y0:=0;
  PT.X1:=Src.Bitmap.Width-30;
  PT.Y1:=0;
  PT.X2:=Src.Bitmap.Width;
  PT.Y2:=Src.Bitmap.Height;
  PT.X3:=0;
  PT.Y3:=Src.Bitmap.Height;
  // Wichtig: Man muss in TProjectiveTransformation die Grösse
  // des Ziel-Rechtecks definieren!
  PT.SrcRect:=FloatRect(0,0,Src.Bitmap.Width-1,Src.Bitmap.Height-1);
  Dst2.BeginUpdate;
    // Gesamtes Bitmap mit transparenter Farbe löschen
    Dst2.Bitmap.Clear(0);
    For X:=0 to Src.Bitmap.Width-1 do Begin
      For Y:=0 to Src.Bitmap.Height-1 do Begin
        // Punkt Koordinaten umrechnen
        P:=PT.Transform(FixedPoint(X,Y));
        // Zugehörigen Pixel von Quelle nach Ziel übertragen
        Dst2.Bitmap.Pixel[X,Y]:=Dst.Bitmap.PixelXS[P.X,P.Y];
      End;
    End;
  Dst2.EndUpdate;
  // und Anzeigen
  Dst2.Invalidate;
  // Transformobjekt freigeben
  PT.Free;
  Button2.Enabled:=false;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Dst.Bitmap.Clear(0);
  Dst2.Bitmap.Clear(0);
  Button1.Enabled:=true;
end;

end.
Miniaturansicht angehängter Grafiken
image32_demo1_fehler.jpg  

Geändert von thomas2009 ( 1. Apr 2011 um 17:35 Uhr)
  Mit Zitat antworten Zitat