AGB  ·  Datenschutz  ·  Impressum  







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

Relative Mausposition in TImage

Ein Thema von ToZie · begonnen am 2. Mai 2008 · letzter Beitrag vom 2. Mai 2008
Antwort Antwort
ToZie

Registriert seit: 17. Feb 2004
43 Beiträge
 
Delphi 10.3 Rio
 
#1

Relative Mausposition in TImage

  Alt 2. Mai 2008, 19:52
Huhu,

ich steh grad irgendwie auf dem Schlauch. Ich habe ein TImage mit irgendeinem Bild darin. Das ganze mit stretch, center und proportional auf True - schaut etwa so aus:

http://img393.imageshack.us/img393/1...fnahme1le2.jpg


Wie kann ich nun die Mauskoordinaten relativ zum dargestellen Bild ermitteln? Je nach Abmessungen des Bildes ergeben sich ja Ränder die zu berücksichtigen sind. Muss ich nachrechnen was TImage sich bei der Darstellung gedacht hat oder gehts irgendwie einfacher?

Grüße und danke schonmal

Torsten
Miniaturansicht angehängter Grafiken
aufnahme1_129.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Relative Mausposition in TImage

  Alt 2. Mai 2008, 20:03
Könntest du das bild bitte an den Beitrag anhängen damit es auch noch verfügbar ist wenn es bei imageshack verschwunden ist? Ansonsten würde der Beitrag wertlos werden und leute mit dem gleichen Problem müssten von vorn anfangen
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
ToZie

Registriert seit: 17. Feb 2004
43 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Relative Mausposition in TImage

  Alt 2. Mai 2008, 22:38
Zitat:
Könntest du das bild bitte an den Beitrag anhängen
Klar, kann ich.


Ich habe inzwischen mal den 'nachrechnen' Ansatz probiert, der ist halt durch Rundungsfehler nicht wirklich genau - vielleicht gehts ja aber auch besser.

Delphi-Quellcode:
function MapImageCoords(Image: TImage; var x, y: integer): boolean;
var
  scale: extended;
  xr, yr: integer;
begin
  with Image do begin
    scale:=Width/Picture.Width;
    if scale>Height/Picture.Height then scale:=Height/Picture.Height;
    xr:=round(Scale*Picture.Width); yr:=round(Scale*Picture.Height);
    x:=x-round((Width-xr) div 2); y:=y-round((Height-yr) div 2);
    result:=(x>=0) and (x<=xr) and (y>=0) and (y<=yr);
  end;
end;
Torsten
  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 11:32 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