AGB  ·  Datenschutz  ·  Impressum  







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

Image

Ein Thema von Stefan_w · begonnen am 28. Apr 2005 · letzter Beitrag vom 1. Mai 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#11

Re: Image

  Alt 28. Apr 2005, 17:48
Oder du nimmst onmouseup von dem Image...
Thomas
  Mit Zitat antworten Zitat
Stefan_w

Registriert seit: 3. Mär 2005
20 Beiträge
 
#12

Re: Image

  Alt 28. Apr 2005, 17:50
tja das is mir auch klar. ganz doof bin ich ja auch nicht. aber ich wollte halt wissen obs nicht nen befehl gibt der mir die position von der mouse auf dem image gibt. waren übrigens die koordinaten von der mouse auf dem desktop und nicht auf dem form.
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Image

  Alt 28. Apr 2005, 19:24
Ähm, also die Koordinaten die du über Mouse.CursorPos bekommst sind natürlich auf den Bildschirm bezogen. Die x und y, die aber als Parameter an die OnMouseMove, OnMouseUp, OnMouseDown, etc übergeben werden, geben dir direkt die Koordinaten auf dem Form an.
Das gilt aber auch nur für die Events des Forms. Wie aber atreju2oo0 bereits festgestellt hat, besitzt auch das Image an sich diese Events.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#14

Re: Image

  Alt 28. Apr 2005, 19:38
In deiner Beispielprozedur ist eckpunkte lokal definiert, d.h. die variable wird immer wieder gelöscht.
Du musst die Variable entsprechend im public/privat Abschnitt deklarieren (oder halt ganz global - das mögen hier einige aber nicht )

Edit: Mal ein schneller Test.
Ok, nun gehts
(Nachteil ist noch, dass nach dem Zeichnen eines Dreiecks ein Mausklick "leer" ist und dann erst 3 neue folgen.
Und dass man das Fenster nicht minimieren sollte )


Aber nur zu Testzwecken

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
  private
    // Variable für Ecken
    ecke: integer;
    // Variable für Array d. Punkte
    points: array[0..2] of TPoint;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
        points[ecke-1].X := X;
        points[ecke-1].Y := Y;

        Inc(ecke);

        if ecke = 4 then
        begin
                with Form1.PaintBox1 do
                begin
                        Canvas.MoveTo(points[0].X, points[0].Y);
                        Canvas.LineTo(points[1].X, points[1].Y);

                        Canvas.MoveTo(points[1].X, points[1].Y);
                        Canvas.LineTo(points[2].X, points[2].Y);

                        Canvas.MoveTo(points[2].X, points[2].Y);
                        Canvas.LineTo(points[0].X, points[0].Y);
                end;
                ecke := 1;
        end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
        ecke := 1;
end;

end.
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Image

  Alt 28. Apr 2005, 19:41
Jede Komponente hat
ClientToScreen
und
ScreenToClient zum Umrechnen!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#16

Re: Image

  Alt 28. Apr 2005, 19:45
Nur zur Vollständigkeit:
Die Daten von Mouse.CursorPos (also global) kannst du mittels TControl.ScreenToClient in lokale Koordinaten umrechnen.

[edit] @Kroko1999: Jedes Control [/edit]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Stefan_w

Registriert seit: 3. Mär 2005
20 Beiträge
 
#17

Re: Image

  Alt 1. Mai 2005, 21:36
vielen dank schonmal für den quelltext. wie würde ich das denn jetzt beispielsweise machen wenn ich sowas wie bei paint haben wollte, dass ich bspw. auf einen punkt eines images drücke, die mouse gedrückt lasse irgendwohin den cursor bewege und der mir immer die gerade von dem drückpunkt bis zu dem aktuellen cursorpunkt macht. also praktisch wie die strichversion bei paint. hab da schon dran rumprobiert ohne hilfe. aber da ich nicht so wirklich viel kann kam da auch nicht wirklich viel bei rum . ich hoffe da mal stark auf eure hilfe. schonmal danke dafür

gruß stefan
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#18

Re: Image

  Alt 1. Mai 2005, 21:44
diese methode heisst "gummiband" und ist in der delphi7-pe OH ausführlich beschrieben.

genial oder? ob es beim d2005 auch noch drin ist, weiss ich nicht.

EDIT: ebenso. einfach Suche->Gummiband

EDIT: ich will ja nicht so sein:

Die Grundmethode:
1.das aktuelle Bild in einen Puffer speichern
2.im onmousedown die koords speichern
3.im onmousemove zuerst das bild zeichnen und dann eine linie von den gespeicherten koords zu der aktuellen ziehen
4.im onmouseup die linie auch in den puffer zu speichern.
5.fertig.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:11 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