AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Canvas Bezugspunkt ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Canvas Bezugspunkt ändern

Ein Thema von Flo.Hoe · begonnen am 17. Mär 2007 · letzter Beitrag vom 10. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#1

Canvas Bezugspunkt ändern

  Alt 17. Mär 2007, 11:17
Ist es möglich bei Zeichnungen auf der Form mit Hilfe von canvas den Bezugspunkt(0,0)zu ändern?
Das würde mir die Arbeit an meinem Zeichenprogramm erheblich erleichtern(weniger Quelltext).
Florian
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Canvas Bezugspunkt ändern

  Alt 17. Mär 2007, 11:20
Was meinst du mit Bezugspunkt?
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Canvas Bezugspunkt ändern

  Alt 17. Mär 2007, 11:25
Aus dem Kopf (also ungetestet):
SetWindowOrgEx(Canvas.Handle, x, y, nil); Weiß aber nicht mehr genau, wie du bei X und Y die Vorzeichen setzen musst.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#4

Re: Canvas Bezugspunkt ändern

  Alt 17. Mär 2007, 11:34
Ich meine den Punkt,nach dem sich canvas beim Zeichnen richtet.
(die linke obere Ecke)
zB beim Zeichnen eines Rechteckes
Form1.canvas.rectangle(30,30,100,100) Ich möchte jetzt den "Bezugspunkt" auf (30,30) verlagern , sodass die folgende Schreibweise genau das selbe Rechteck darstellt.
Form1.canvas.rectangle(0,0,70,70) @Flocke: Die Methode die du mir gegeben hast setzt den Bezugspunkt nicht auf die Form, sondern auf einen Festen Punkt auf dem "Monitor". So kommt es dazu, dass die Zeichnungen sich verschieben, wenn die Form verschoben wird.
Florian
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#5

Re: Canvas Bezugspunkt ändern

  Alt 17. Mär 2007, 12:16
Zitat von Flo.Hoe:
Ich meine den Punkt,nach dem sich canvas beim Zeichnen richtet.
(die linke obere Ecke)
....
@Flocke: Die Methode die du mir gegeben hast setzt den Bezugspunkt nicht auf die Form, sondern auf einen Festen Punkt auf dem "Monitor". So kommt es dazu, dass die Zeichnungen sich verschieben, wenn die Form verschoben wird.
SetViewportOrgEx ist das entsprechende Gegenstück.

Gruss Reinhard
  Mit Zitat antworten Zitat
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#6

Re: Canvas Bezugspunkt ändern

  Alt 17. Mär 2007, 12:49
Es ist zwar das Gegenstück (die Vorzeichen sind entgegengesetzt), aber mein Problem ist noch nicht gelöst.
Alle Zeichnungen orientieren sich immer noch nicht an der Form, sondern an der Position am "Bildschirm".
Florian
  Mit Zitat antworten Zitat
herkulesamstart

Registriert seit: 17. Jun 2005
36 Beiträge
 
#7

Re: Canvas Bezugspunkt ändern

  Alt 17. Mär 2007, 12:56
Ist zwar nciht genau was du willst aber so gehts ja auch:

deklarier doch zwei konstanten...

Delphi-Quellcode:

CONST x=30
      y=30

Form1.canvas.rectangle(0+x,0+y,70+x,70+y)
  Mit Zitat antworten Zitat
Flo.Hoe

Registriert seit: 28. Sep 2006
Ort: Berlin
73 Beiträge
 
Turbo C++
 
#8

Re: Canvas Bezugspunkt ändern

  Alt 17. Mär 2007, 13:08
ja so hab ich es auch schon probiert , aber auf dauer ist mir das einfach zu viel code.
Bei komplexen Algorithmen wird das ganz schön unübersichtlich.
Florian
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Canvas Bezugspunkt ändern

  Alt 17. Mär 2007, 15:24
Zitat von Flo.Hoe:
@Flocke: Die Methode die du mir gegeben hast setzt den Bezugspunkt nicht auf die Form, sondern auf einen Festen Punkt auf dem "Monitor". So kommt es dazu, dass die Zeichnungen sich verschieben, wenn die Form verschoben wird.
Dann probiere die Varianten OffsetWindowOrgEx bzw. OffsetViewportOrgEx, die verschieben den Ursprung und setzen ihn nicht komplett neu. Außerdem solltest du diese Aktion später wieder rückgängig machen, also etwa so:
Delphi-Quellcode:
var
  pt: TPoint;
begin
  OffsetWindowOrgEx(Canvas.Handle, DeltaX, DeltaY, pt);
  try
    // Zeichnen auf Canvas
  finally
    SetWindowOrgEx(Canvas.Handle, pt.X, pt.Y, nil);
  end;
end;
Nachtrag: Siehe auch unter Coordinate Space and Transformation Functions, da finden sich alle API-Funktionen, die damit zu tun haben.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Canvas Bezugspunkt ändern

  Alt 17. Mär 2007, 20:01
Sonst könntest du ja auch erst alles auf ein Offscreen-Bitmap zeichnen und das dann an die Position (30|30) auf das Canvas kopieren.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:27 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