AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Koordinaten umrechnen, nur wie?

Ein Thema von LDericher · begonnen am 14. Dez 2008 · letzter Beitrag vom 15. Dez 2008
Antwort Antwort
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#1

Koordinaten umrechnen, nur wie?

  Alt 14. Dez 2008, 19:41
Hallp DP!

Ich habe folgendes Problem:

Gegeben ist eine Image-Komponente mit einem Bild (JPEG) von variabler Größe.
Das Image ist auf proportional und center eingestellt. (Bild wird mit festem Seitenverhältnis skaliert in der Mitte des Image gezeigt.)
Auch die Koordinaten des Mauscursors liegen vor (ggf. lokal und global).

Gesucht sind nun die Koordinaten des dargestellten Bildes, über denen der Zeiger schwebt.

Hat da wer 'ne Idee?

Euer LDer!

P.S.: Ich nehme auch "Foren-Suchbeispiele", mir fällt bloß nix passendes dazu ein -.-
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Koordinaten umrechnen, nur wie?

  Alt 15. Dez 2008, 09:54
<Image>.Top & <Image>.Left usw. geben dir die akt. Position des Bildes an.
Bei <Form>.FormMouseMove() bekommst du die Mouskoordinaten.
Der Rest ist Mathe.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Koordinaten umrechnen, nur wie?

  Alt 15. Dez 2008, 17:11
Für die Allgemeinheit, hier die Lösung des Problems:

Delphi-Quellcode:
function PosOnPicture(Display: TImage): TPoint;
var
  IMGRelation,
  DisplayRelation,
  Scale:Extended;
  OffsX,
  OffsY:integer;
  MPos:TPoint;
  procedure BorderIt(var Input:integer; MaxBorder, MinBorder:integer);
  begin
  if(Input>MaxBorder)
    then Input:=MaxBorder
  else if(Input<MinBorder)
    then Input:=MinBorder;
  end;
begin
IMGRelation:=Display.Picture.Width/Display.Picture.Height;
DisplayRelation:=Display.Width/Display.Height;
if(DisplayRelation>IMGRelation)then
  begin
  Scale:=(Display.Height/Display.Picture.Height);
  OffsX:=(Display.Width div 2)-(round(Scale*Display.Picture.Width) div 2);
  OffsY:=0;
  end else
  begin
  Scale:=(Display.Width/Display.Picture.Width);
  OffsX:=0;
  OffsY:=(Display.Height div 2)-(round(Scale*Display.Picture.Height) div 2);
  end;
GetCursorPos(MPos);
MPos:=Display.ScreenToClient(MPos);
MPos.X:=MPos.X-OffsX;
MPos.Y:=MPos.Y-OffsY;
Result.X:=round(MPos.X/Scale);
Result.Y:=round(MPos.Y/Scale);
BorderIt(Result.X, Display.Picture.Width, 0);
BorderIt(Result.Y, Display.Picture.Height, 0);
end;
  Mit Zitat antworten Zitat
Benutzerbild von smallsmoker
smallsmoker

Registriert seit: 12. Nov 2007
Ort: Duisburg
283 Beiträge
 
#4

Re: Koordinaten umrechnen, nur wie?

  Alt 15. Dez 2008, 18:10
[ot]
kommen inline prozeduren vor oder nach den variablen ?
[/ot]
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Koordinaten umrechnen, nur wie?

  Alt 15. Dez 2008, 18:12
IIRC danach.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:56 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