Board index » delphi » Delphi 4.0 API Funktionen SetViewportExtEx ...

Delphi 4.0 API Funktionen SetViewportExtEx ...

Wer kann mir ber die Anwendung dieser API Funktionen geerelle Informationen
geben ??
 

Re:Delphi 4.0 API Funktionen SetViewportExtEx ...


Fr einen Devicekontext existieren zwei Koordinatensysteme(logisch und
physikalisch).
Alle GDI-Zeichenfunktionen beziehen sich auf das logische Koordinatensystem
und werden bei der Ausgabe auf ein Ger?t(z.B. Bildschirm, Drucker) auf das
physikalische Koordinatensystem gemappt.

BOOL SetWindowExtEx(

    HDC hdc,    // handle of device context
    int nXExtent,       // new horizontal window extent  
    int nYExtent,       // new vertical window extent
    LPSIZE lpSize       // original window extent
   );
setzt die Ausdehnung des logischen

BOOL SetViewportExtEx(

    HDC hdc,    // handle of device context
    int nXExtent,       // new horizontal viewport extent  
    int nYExtent,       // new vertical viewport extent
    LPSIZE lpSize       // original viewport extent
   );

 die Ausdehnung des physikalischen Koordinatensystem.

Typischerweise benutzt man die beiden Funktionen zum Skalieren von
Graphiken. Wird die Ausdehnung eines der beiden Koordinatensystem ungleich
des anderen gesetzt, so wird die Graphik entsprechend vergr??ert oder
verkleinert.
Ebenso kann man es zum Ausdrucken von Graphiken mit GDI-Funktionen
verwenden, da die Aufl?sung des Druckers wesentlich h?her liegt als die des
Bildschirms.

Bsp.:

Xnum         := 10000;
Xdenom       := 10000;
Ynum         := 10000;
Ydenom       := 10000;

procedure TMDIForm.FormPaint(Sender: TObject);
begin
  SetMapMode(MyCanvas.Handle, MM_ANISOTROPIC);
  SetWindowExtEx(MyCanvas.Handle, Xnum, Ynum, nil);
  SetViewportExtEx(MyCanvas.Handle, Xdenom, Ydenom, nil);

  GDI-Zeichen-Funktionen........

  end;

procedure TMainForm.Vergroessern(Sender: TObject);
begin
  MDIForm.Xnum   := round(MDIForm.Xnum / 1.1);
  MDIForm.Ynum   := round(MDIForm.Ynum / 1.1);
  MDIForm.Refresh;
  end;

procedure TMainForm.Verkleinern(Sender: TObject);
begin
  MDIForm.Xnum   := round(MDIForm.Xnum * 1.1);
  MDIForm.Ynum   := round(MDIForm.Ynum * 1.1);
  MDIForm.Refresh;
  end;

Mein Name <PC-Po...@t-online.de> schrieb im Beitrag
<79um5b$oa...@news02.btx.dtag.de>...

Quote
> Wer kann mir ber die Anwendung dieser API Funktionen geerelle
Informationen
> geben ??

Re:Delphi 4.0 API Funktionen SetViewportExtEx ...


Sehr geehrter Herr Paas,

vielden Dank fr Ihre Mhe. Ich habe mich ber Ihre Antwort In der
Newsgroups:
borland/public/delphi/grafics gefreut. Leider habe ich noch so meine
Verst?ndigungsprobleme mit diesem Funktionen:

SetMapMode; SetWindowExtEx; SetViewportExtEx

ich habe diese Funktionen in einem Programm von mir auf ein TImage Objekt
versucht anzuwenden. Im ersten Schritt funktionieren diese Funktionen aber
im
weiteren Programmverlauf werden wieder die alten Windowseinstellungen
benutzt.
Weiter unten habe ich Ihnen mein Testprogramm kopiert. Ich w?hre Ihnen sehr
verbunden wenn Sie mir noch einmal Hilfestellung leisten wrden, oder einen
Verweis auf vernnftige Literatur geben wrden.

Mein Problem ist eine Erstellung einer grafische Auswertesoftware die aus
einer
Datenbank Ergebnisse in eine Grafik darstellt soll. Aus diesem Grund habe
ich
mit dem Befehl SetWindowOrgEx(.. experimentiert. Leider mit wenig Erfolg.

// *****************************
// Hier mein Testprogramm
// *****************************
unit fgr;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Zeichnen: TButton;
    CanvasSet: TButton;
    klein: TButton;
    Gross: TButton;
    procedure ZeichnenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var Form1: TForm1;

const Xnum = 10000;
      Xdenom = 1000;
      Ynum = 10000;
      Ydenom = 1000;

implementation

{$R *.DFM}

procedure TForm1.ZeichnenClick(Sender: TObject);
begin
  Image1.Canvas.Ellipse(100,100,400,400);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  {
  Xnum    := 10000;
  Xdenom  := 1000;
  Ynum    := 10000;
  Ydenom  := 1000;
  }
  SetMapMode(Image1.Canvas.Handle,MM_ISOTROPIC);
  SetWindowExtEx(Image1.Canvas.Handle,Xnum,Ynum,nil);
  SetViewportExtEx(Image1.Canvas.Handle,Xdenom,Ydenom,nil);
  // SetWindowOrgEx(Image1.Canvas.Handle,-200,-200,nil);
  Image1.Canvas.Ellipse(100,100,400,400);
end;

end.

// ******************************
// Ende des Testprogrammes
// ******************************

Fr Ihre Bemhungen im Vorraus herzlichen Dank

Helmut Hoppe
PC-Point

E-Mail: PC-Po...@t-online.de
Telefon: 06623/918185
Telefax: 06623/818186

Other Threads