AGB  ·  Datenschutz  ·  Impressum  







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

Größe der Canvas ermitteln?

Ein Thema von SirThornberry · begonnen am 16. Mär 2004 · letzter Beitrag vom 17. Mär 2004
Antwort Antwort
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#1

Größe der Canvas ermitteln?

  Alt 16. Mär 2004, 23:06
Wie kann ich die größe einer Canvas ermitteln?? Wenn ich zum Beispiel eine funktion hab die nur das Handel von der Canvas übergeben bekommt wie kann ich dann die größe davon rausfinden. Bisher habe ichs das so gemacht
Delphi-Quellcode:
procedure dosomething(CanvasHandle: Cardinal);
var LCanvas: TCanvas;
begin
  LCanvas := TCanvas.Create;
  LCanvas.Handle := CanvasHandle;
  //und jetzt mit LCanvas.ClipRect die größe ermittelt
  LCanvas.Free;
end;
Allerdings musste ich heute feststellen das diese Methode nicht funktioniert. Ein Blick in die OH hat mir dann verraten das mit ClipRect den bereich der Canvas zurückgibt der neu gezeichnet werden muss. Wenn jetzt also meine funktion innerhalb eines WM_PAINT aufgerufen wird, so kann ich nicht mehr über ClipRect die größe rausfinden, da manchmal nur ein stück der Canvas neu gepaintet werden muss... Hoffe ihr habts verstanden, wenn ni einfach posten welchen teil ich nochmal besser erklären muss..
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: Größe der Canvas ermitteln?

  Alt 16. Mär 2004, 23:21
schau mal in der MSDN nach GetBoundsRect

sonst könnte man nach über das Bitmap, welches Hinter dem DC hängt versuchen an die Größe heranzukommen.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Größe der Canvas ermitteln?

  Alt 16. Mär 2004, 23:33
ich schau mal nach GetBoundsRect. Über das Bitmap kann ich nicht rankommen da ich bei WM_Paint kein Bitmap mitbekomme sondern nur das Handle der Canvas. Außerdem sollen meine Funktionen nicht von irgend einem Object abhängig sein sondern halt für jede canvas zu verwenden sein. So das man auch die Canvas von anderen Programmen angeben kann
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Größe der Canvas ermitteln?

  Alt 16. Mär 2004, 23:47
Delphi-Quellcode:
Width := Canvas.ClipRect.Right - Canvas.ClipRect.Left;
Height := Canvas.ClipRect.Bottom - Canvas.ClipRect.Top;

// da aber LEFT und TOP 0 sind, reicht es auch so:

Width := Canvas.ClipRect.Right;
Height := Canvas.ClipRect.Bottom;
$2B or not $2B
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#5

Re: Größe der Canvas ermitteln?

  Alt 16. Mär 2004, 23:49
Zu dem Bitmap:

Meiner bescheiden Meinung nach liegt hinter jeden Canvas ein Bitmap. Und wenn man an dieses heran kommt, könnte man von diesem die Größe verwenden. Denn mehr kann der Canvas eh nicht verarbeiten.

Via GetObject kann man eve. das Bitmap holen.

Ob das exakt stimmt weiß ich aber auch nicht so genau.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Größe der Canvas ermitteln?

  Alt 16. Mär 2004, 23:51
@himitsu: Das klappt eben nicht immer. Angenommen ich habe ein Bild 100x100 Pixel und ich verschiebe ein anderes fenster so das es kurzzeitig die rechte untere ecke von meinem Bild verdeckt so bekomme ich in der Paintmethode beispielsweise folgende Werte: Rect(75, 80, 100, 100) oder so, auf jeden fall nicht die richtige größe da in dem fall nur der untere bereich neu gezeichnet werden muss. Hab meine Componenten bisher leider fast alle mit verwendung von Cliprect geschrieben weil ich das bis zum heutigen zeitpunkt auch nicht wusste das cliprect nur den bereich enthält der neu gezeichnet werden muss.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: Größe der Canvas ermitteln?

  Alt 17. Mär 2004, 06:35
Ein Canvas hat keine Groesse.
Man kann malen wohin man will. Das zugeordnete Fenster hingegen hat eine Groesse.
  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 07:21 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