AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Graphics32 - Transformation
Thema durchsuchen
Ansicht
Themen-Optionen

Graphics32 - Transformation

Ein Thema von simlei · begonnen am 16. Mär 2006 · letzter Beitrag vom 20. Mär 2007
Antwort Antwort
Benutzerbild von TOC
TOC

Registriert seit: 5. Jan 2005
Ort: Trier
248 Beiträge
 
Delphi 7 Personal
 
#1

Re: Graphics32 - Transformation

  Alt 19. Mär 2007, 15:10
Hi Simlei!

Wir haben scheinbar ein ähnliches Problem. Ich hab mir die Graphics32 gestern erst runtergeladen und bin noch ganz am Anfang, aber das mit der Transformation in ein Quatrilateral (Eine Fläche mit 4 Seiten) geht in etwa so:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Src: TImage32;
    Dst: TImage32;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    PT: TProjectiveTransformation;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  PT:=TProjectiveTransformation.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  PT.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Erstmal 4 Punkte definieren für das vierseitige konvexe Ziel-Polygon
  // Reihenfolge Oben/Linke, Oben/Rechts, Unten/Rechts, Unten/Links
  PT.X0:=50;
  PT.Y0:=20;
  PT.X1:=Src.Bitmap.Width-50;
  PT.Y1:=20;
  PT.X2:=Src.Bitmap.Width-10;
  PT.Y2:=Src.Bitmap.Height-10;
  PT.X3:=10;
  PT.Y3:=Src.Bitmap.Height-10;

  // Wichtig: Man muss in TProjectiveTransformation die Grösse
  // des Quell-Rechtecks definieren!
  PT.SrcRect:=FloatRect(0.0,0.0,Src.Bitmap.Width,Src.Bitmap.Height);
  // Breite und Höhe der Ziel-Bitmap setzen
  Dst.Bitmap.Width:=Src.Bitmap.Width;
  Dst.Bitmap.Height:=Src.Bitmap.Height;
  Dst.BeginUpdate;
    // Verformen
    Transform(Dst.Bitmap,Src.Bitmap,PT);
  Dst.EndUpdate;
  // und Anzeigen
  Dst.Invalidate;
end;

end.
Mein Testprogramm kannst Du Dir aus diesem Thread herunterladen : Wie kann man eine Bitmap in ein Trapez blitten

Aber Frag mich jetzt bitte nicht wie man verhindern kann das er die nichtbenutzen Bereiche mit Schwarz und Weiss auffüllt, ich hab noch nicht herausgefunden wie man ein Image transparent blitten kann, ich hab die Graphics32 ja erst seit gestern!

Grüsse von TOC!
Lars Uwe Hohmann
"Wäre die Erde eine Bank, ihr hättet sie längst gerettet!"
(Zitat GreenPeace)
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:06 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