AGB  ·  Datenschutz  ·  Impressum  







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

Image dem Mousezeiger folgen

Ein Thema von Christian18 · begonnen am 6. Aug 2007 · letzter Beitrag vom 7. Aug 2007
Antwort Antwort
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#1

Image dem Mousezeiger folgen

  Alt 6. Aug 2007, 22:02
Hallo,

der Mittelpunkt von meinem Images, welches ich auf meiner Form habe soll immer dem Mousezeiger folgen. Wie kann ich das machen?

LG Chris
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Image dem Mousezeiger folgen

  Alt 6. Aug 2007, 22:33
Im OnMouseMove-Event des Forms zeichnest du direkt auf den Canvas des Forms.
Position ausgehend von der aktuellen Mouse Position.
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#3

Re: Image dem Mousezeiger folgen

  Alt 6. Aug 2007, 22:40
Hallo,

ja das bekomme ich irgendwie nicht hin
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Image dem Mousezeiger folgen

  Alt 6. Aug 2007, 22:43
auftragsprogrammierer sind wir hier nicht
zeig mal her was du bis jetzt hast und wir schauen mal in den code rein.
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#5

Re: Image dem Mousezeiger folgen

  Alt 6. Aug 2007, 22:48
Hier mein Code:

Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Image1.Left:=Round(X - Image1.Width / 2);
  Image1.Top:=Round(Y - Image1.Height / 2);
end;
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Image dem Mousezeiger folgen

  Alt 6. Aug 2007, 22:54
du musst natürlich bedenken, dass du wenn du dich mit dem mauszeiger über dem image befindest,
nicht das mousemove event des forms auftritt sondern das mousemove event des images.

musst du unbedingt ein timage verwenden?
mal doch im onformpaint event das bild selber per form.canvas.draw()
oder spricht da was gegen?
  Mit Zitat antworten Zitat
Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#7

Re: Image dem Mousezeiger folgen

  Alt 6. Aug 2007, 23:17
Hallo,

ich brauche unbedingt ein Image.
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Image dem Mousezeiger folgen

  Alt 6. Aug 2007, 23:19
Hi,

die Komponente TApplicationEvents habe ich genommen und dort im Event onMessage folgenden Code eingefügt:
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if Msg.message= Messages.WM_MOUSEMOVE then
  begin
    Image1.Left:=Round(ScreenToClient(Mouse.CursorPos).X - Image1.Width / 2);//Image1.Picture.Graphic.Width
    Image1.Top:=Round(ScreenToClient(Mouse.CursorPos).Y - Image1.Height / 2);//Image1.Picture.Graphic.Height
  end;
end;
Dann ging es bei mir.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Image dem Mousezeiger folgen

  Alt 7. Aug 2007, 00:44
und wer es ganz ohne komponenten mag:

Delphi-Quellcode:
unit frmMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure MessageEventHandler(var Msg: TMsg; var Handled: Boolean);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMessage := MessageEventHandler;
end;

procedure TForm1.MessageEventHandler(var Msg: TMsg; var Handled: Boolean);
begin
  case Msg.message of
    WM_MOUSEMOVE:
      begin
        Invalidate();
      end;

    WM_PAINT:
      begin
        Image1.Left := Round(ScreenToClient(Mouse.CursorPos).X - Image1.Width / 2);
        Image1.Top := Round(ScreenToClient(Mouse.CursorPos).Y - Image1.Height / 2);
      end;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Image dem Mousezeiger folgen

  Alt 7. Aug 2007, 02:12
Zitat von computer-glossar.de:
und wer es ganz ohne komponenten mag:
Delphi-Quellcode:
...
    WM_PAINT:
      begin
        Image1.Left := Round(ScreenToClient(Mouse.CursorPos).X - Image1.Width / 2);
        Image1.Top := Round(ScreenToClient(Mouse.CursorPos).Y - Image1.Height / 2);
      end;
  end;
end;
Und warum änderst du jetzt die Position des Images im WM_PAINT Event, hat das einen Vorteil? IMHO wird der Code jetzt öfter als notwendig ausgeführt.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  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 22:38 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