AGB  ·  Datenschutz  ·  Impressum  







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

Mausposition auf ImgView32 / Layer scrollen

Offene Frage von "RobertP"
Ein Thema von RobertP · begonnen am 16. Sep 2006 · letzter Beitrag vom 18. Sep 2006
Antwort Antwort
RobertP

Registriert seit: 19. Aug 2006
181 Beiträge
 
Turbo Delphi für Win32
 
#1

Mausposition auf ImgView32 / Layer scrollen

  Alt 16. Sep 2006, 23:14
Moin,
ich möchte wenn jemand auf das Bild (mit ImgView32) klickt, die Mausposition auf dem Bild haben.

Delphi-Quellcode:
procedure TEditorForm.mapImageClick(Sender: TObject);
var
  x, y : Integer;
  P : TPoint;
begin
  P := ScreenToClient(Mouse.CursorPos);
  x := P.X;
  y := P.Y;
  x := x - mapImage.Left;
  y := y - mapImage.Top;
end;
Funktioniert auch wenn die Scrollbalken ganz links und ganz oben sind. Was mach ich jetzt aber wenn sie das nicht sind?

Grüße,
MrPayne
Robert
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Mausposition auf ImgView32

  Alt 16. Sep 2006, 23:30
Hallo MrPayne,

vielleicht findest du in diesem Beitrag den richtigen Ansatz.

Gruß Hawkeye
  Mit Zitat antworten Zitat
RobertP

Registriert seit: 19. Aug 2006
181 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Mausposition auf ImgView32

  Alt 17. Sep 2006, 00:15
Jup Problem gelöst, Danke!

Falls es jemand interessiert:
Delphi-Quellcode:
P := ScreenToClient(Mouse.CursorPos);
P := mapImage.ControlToBitmap(P);
P.X := P.X - mapImage.Left;
P.Y := P.Y - mapImage.Top;
Robert
  Mit Zitat antworten Zitat
RobertP

Registriert seit: 19. Aug 2006
181 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Mausposition auf ImgView32

  Alt 17. Sep 2006, 15:05
Schon wieder ein Problem:

In des ImgView32 lad ich ne Grafik, da drauf mach ich ein Layer, wo ich was reinzeichne. Wenn ich jetzt scrolle scrollt zwar die Grafik aber das gezeichnete, also das Layer, bleibt am selben Fleck. Wie krieg ich das Layer dazu dass es mitscrollt?

Mein Versuch war leider net so erfolgreich:
Delphi-Quellcode:
procedure TEditorForm.mapImageScroll(Sender: TObject);
var
P : TPoint;
left, top, right, bottom : Integer;
begin
  left := Trunc(L.Location.Left);
  top := Trunc(L.Location.Top);

  P.X := left - mapImage.Left;
  P.Y := top - mapImage.Top;

  P := mapImage.ControlToBitmap(P);


  left := P.X;
  top := P.Y;
  right := left + 10;
  bottom := top + 10;

  Label3.Caption := IntToStr(left);
  Label4.Caption := IntToStr(top);
  L.Location := FloatRect(left, top, right, bottom);
end;
Robert
  Mit Zitat antworten Zitat
RobertP

Registriert seit: 19. Aug 2006
181 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Mausposition auf ImgView32 / Layer scrollen

  Alt 18. Sep 2006, 21:14
War vielleicht net so klug des in alten Thread zu posten, da habens denk ich viele übersehen. Aber weiß denn niemand ne Lösung um die Layer mitscrollen zu lassen? Wäre recht wichtig....

PS: nochn Problem

Wenn ich auf des Image klick wird ja im onMouseDown das Layer übergeben. Wenn ich nu neinmal ein Layer angeklickt habe dann ist dieses irgendwie so groß wie die ganze Grafik, danach wird, egal wo ich hinklicke dieses Layer angegeben...
Als Notlösung geht natürlich alle Layer neu zu erstellen, aber da musses ja auch ne bessere Methode geben... Btw wie kann ichs eigentlich machen dass klicks nur auf dem nichttransparenten Teil des Layers registriert werden?
Robert
  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 12:00 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