Einzelnen Beitrag anzeigen

Shiva

Registriert seit: 26. Mai 2004
7 Beiträge
 
#1

Relative Pixelkoordinaten eines Bildes ermitteln

  Alt 19. Mai 2007, 15:00
Hallo miteinander!

Ich habe in meiner Anwendung ein TImage, welches in einer TScrollBox steckt. Wenn ich diese beiden Komponenten direkt auf dem Formular platziere, dann bestimme ich die relativen Pixelkoordnaten wie folgt:

Delphi-Quellcode:
 
// absoluten CursoKoord.
GetCursorPos(Point);

Point.X := Trunc(abs((Point.X - ScrollBoxOrginalBild.Left - MainForm.Left - 7 +
                 abs((ImageOrginal.ClientOrigin).X - (ScrollBoxOrginalBild.ClientOrigin).X)) / Scalefactor));

Point.Y := Trunc(abs((Point.Y - ScrollBoxOrginalBild.Top - MainForm.Top - 52 +
                 abs((ImageOrginal.ClientOrigin).Y - ScrollBoxOrginalBild.ClientOrigin).Y)) / Scalefactor));
Die "7" für die X-Koord. sowie die "52" für die Y-Koord sind Offsets, die ich durch probieren herausbekommen habe. Ich weiss alledings nicht wie es zu diesen Offsets kommt.

... Wenn ich jetzt die ScrollBox mit dem untergeordnetem TImage in ein TabbedNotebook stecke, dann versuche ich die rel. Pixelkoordinaten wie folgt zu bestimmen.

Delphi-Quellcode:

// absoluten CursoKoord.
GetCursorPos(Point);

Point.X := Trunc(abs((Point.X - ScrollBoxOrginalBild.Left - TabbedNotebook_Original.Left - MainForm.Left - 7 +
                 abs((ImageOrginal.ClientOrigin).X - (ScrollBoxOrginalBild.ClientOrigin).X)) / scalefactor));

Point.Y := Trunc(abs((Point.Y - ScrollBoxOrginalBild.Top - TabbedNotebook_Original.Top - MainForm.Top - 52 +
                 abs((ImageOrginal.ClientOrigin).Y - (ScrollBoxOrginalBild.ClientOrigin).Y)) / scalefactor));
Mann kann das Bild zoomen. Die Zoomfunktion realisiere ich so, indem ich die TImage.height := ZoomFaktor * Bild.Height und TImage.Width:= ZoomFaktor * Bild.Width setzte und dann mit StretchDraw zeichne.

Das Problem welches jetzt auftritt ist, dass sich die Pixelkoordinaten, innerhalb eines Pixels, ändern, was ja eigentl. nicht sein kann.

Wenn ich die ScrollBox mit dem TImage direkt auf dem Forumular platziere, dann ist dass nicht der Fall. Allerdings brauch ich das TabbedNoteBook, aus Platz und übersichtlichkeits-Gründen.

Z.Zt. sehe ich den Wald wohl vor lauter Bäumen nicht ... Falls wer eine Idee hat ... ich bin sehr dankbar für jeden hilfreichen Kommentar

so far so long
mfg Shiva
  Mit Zitat antworten Zitat