Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Width einer Canvas auslesen (https://www.delphipraxis.net/37007-width-einer-canvas-auslesen.html)

Nikolas 29. Dez 2004 15:08


Width einer Canvas auslesen
 
Das klingt zwar etwas komisch, aber genau dass ist gerade mein Problem. Ich will an eine Procedure in einer Klasse eine Canvas übergeben. Jetzt brauche ich aber in dieser Procedure Infos über Höhe und Breite der Canvas. Nur leider hat TCanvas diese Eigenschaften nicht... Kann ich die halbwegs einfach auslesen, oder muss ich diese Werte noch zusätzlich als Parameter übergeben? :gruebel:
Vielen Dank

mytar 29. Dez 2004 15:11

Re: Width einer Canvas auslesen
 
Hab genau das gleiche Problem,
bis jetzt hab ich immer ein TImage-Objekt verwendet,
und dann auf die Canvas-Instanz zugegriffen,
eine bessere Lösung würde mich sehr interessieren.

Danke :-D

Muetze1 29. Dez 2004 16:42

Re: Width einer Canvas auslesen
 
Moin!

Du musst die Abmasse mit übergeben.

MfG
Muetze1

Nikolas 30. Dez 2004 11:48

Re: Width einer Canvas auslesen
 
Das ist komisch :shock: Gibt's da auch eine sinnvolle Erklärung dafür, dass die Canvas nicht selbst weiss, wie groß sie ist?
Wenn ich dann sowas aufrufen will
Delphi-Quellcode:
ZeichnenAuf(image1.canvas,image1.width,image1.height)
dann wunder ich mich schon, dass es da nichts einfacheres gibt. :gruebel:

Sprint 30. Dez 2004 12:25

Re: Width einer Canvas auslesen
 
TCanvas hat ein Handle vom Typ DC. Anhand dieses Handle kannst du mit WindowFromDC das dazu gehörige Fensterhandle ermitteln. Wenn du das Fensterhanlde hast, kannst du auch die Maße bestimmen.

Außerdem würde ich TControlCanvas benutzen und dieses an deine Funktion/Prozedur weiterleiten.

Nothine 30. Dez 2004 13:23

Re: Width einer Canvas auslesen
 
du könntest dir mit der funktion MSDN-Library durchsuchenGetClipBox die maße des canvas holen.
Es gibt zwar laut MSDN einige einschränkungen, aber für den anfang funktionierts z.B. mit Form1.Canvas janz jut.

Delphi-Quellcode:
function CanvasWidth(Canvas: TCanvas): Integer;
var R: TRect;
begin
  GetClipBox(Canvas.Handle,R);
  Result := R.Right;
end;

function CanvasHeight(Canvas: TCanvas): Integer;
var R: TRect;
begin
  GetClipBox(Canvas.Handle,R);
  Result := R.Bottom;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz