Position eines Clicks in einem ImageView abfragen??

Diskutiere das Thema Position eines Clicks in einem ImageView abfragen?? im Forum Mac OS Entwickler, Programmierer.

  1. mac_in_tosh

    mac_in_tosh Thread Starter Mitglied

    Beiträge:
    217
    Zustimmungen:
    0
    Mitglied seit:
    20.05.2007
    Hallo zusammen,
    ich möchte, dass bei einem Click in ein View einen Punkt an der gecklickten Stelle macht. Ich stelle mir das etwa so vor:

    if(click innerhalb View){
    x=clickposition;
    makepoint x;
    }

    Am liebsten wäre mir natürlich,wenn dies in AppleScript Studio ginge, da ich aber nicht davon Ausgehe habe ich das hier gepostet. Wenn es tatsächlich in Applescript möglich wäre, wäre ich froh, wenn man den Thread ins AS-Forum verschieben könnte.
    Vielen Dank für eure Hilfe!!
     
  2. below

    below Mitglied

    Beiträge:
    13.564
    Zustimmungen:
    1.088
    Mitglied seit:
    15.03.2004
    Was für ein View? In welcher Sprache/Framework soll das realisiert werden?

    Oder gibt es noch gar nichts von diesem Projekt?

    Alex
     
  3. mac_in_tosh

    mac_in_tosh Thread Starter Mitglied

    Beiträge:
    217
    Zustimmungen:
    0
    Mitglied seit:
    20.05.2007
    Es gibt noch gar nichts von diesem Projekt. Ich möchte es jedoch in Objective-C machen in Xcode mit einem ImageView, weil ich ein Bild als Hintergrund nehmen will.
     
  4. below

    below Mitglied

    Beiträge:
    13.564
    Zustimmungen:
    1.088
    Mitglied seit:
    15.03.2004
    Mach eine Subclass von KIImageView oder NSImageView, und überschreib - (void)mouseDown:(NSEvent *)theEvent.

    Fertig.

    Alex
     
  5. mac_in_tosh

    mac_in_tosh Thread Starter Mitglied

    Beiträge:
    217
    Zustimmungen:
    0
    Mitglied seit:
    20.05.2007
    Ähm, ich bin leider ziemlicher Anfänger. Es tut mir wirklich leid, wenn ich dich nun belästige, aber könntest du mir das vielleicht etwas ausführlich erklären??
    Und ausserdem muss ich die Methode doch noch definieren.
    Wäre sehr dankbar!!
     
  6. below

    below Mitglied

    Beiträge:
    13.564
    Zustimmungen:
    1.088
    Mitglied seit:
    15.03.2004
    Sorry, nein, echt nicht. Da muss ich auf die übliche Literatur verweisen.

    Und Du musst die Methode natürlich nicht definieren, da Du sie ja von der Superclass erbst.

    Alex
     
  7. mac_in_tosh

    mac_in_tosh Thread Starter Mitglied

    Beiträge:
    217
    Zustimmungen:
    0
    Mitglied seit:
    20.05.2007
    Hm. nun, es hat mich zwar nicht wirklich weiter gebracht, aber trotzdem vielen Dank.
     
  8. below

    below Mitglied

    Beiträge:
    13.564
    Zustimmungen:
    1.088
    Mitglied seit:
    15.03.2004
    Wenn Du mehr konkrete Fragen stellst, helfe ich sehr gerne. Dir aber jetzt Cocoa bzw. objektorientierte Programmierung beizubringen sprengt diesen Thread.

    Aber wie immer mache ich einen Deal: Du räumst mein Büro auf, dann gebe ich Privatunterricht.

    Alex
     
  9. mac_in_tosh

    mac_in_tosh Thread Starter Mitglied

    Beiträge:
    217
    Zustimmungen:
    0
    Mitglied seit:
    20.05.2007
    Nun, ich habe die Zeile, die du mir genannt hast in die Header Datei der Erstellten Klasse geschrieben. Wo kann ich denn nun hinschreiben, was passiert, wenn ich clicke??
     
  10. below

    below Mitglied

    Beiträge:
    13.564
    Zustimmungen:
    1.088
    Mitglied seit:
    15.03.2004
    :Oldno:

    Du musst das Konzept des Subclassing verstehen!

    1. Machst Du eine Subclass von der Klasse, die Du ändern willst.

    @interface MySuperDuperView : NSImageView
    {
    ...
    }
    ...
    @end

    DANN überschreibst Du in der IMPLEMENTATION die Methode:

    @implementation MySuperDuperView
    - (void)mouseDown:(NSEvent *)theEvent
    {
    ...
    }
    @end

    Welche Bücher hast Du, Hillegass oder Negm-Awad/Rodewig?

    Alex
     
  11. mac_in_tosh

    mac_in_tosh Thread Starter Mitglied

    Beiträge:
    217
    Zustimmungen:
    0
    Mitglied seit:
    20.05.2007
    Ach so.
    Ich habe nun als versuch ein kleines Programm eines Anfängerprogramms etwas abgeändert. In diesem Programm konnte man auf einen Button drücken und in eiem Textfeld wurde einfach immer plus 1 gezählt. Ich habe ein ImageView erstellt und probiert, dass plus 1 gezält wird, wenn ich auf das ImageView klicke. Ich habe ein Objekt im IB erstellt(blauer Würfel) und das Outlet disp_update mit dem Textfeld verbunden. Nun habe ich die Class Files erstellt und diese In Xcode hinzugefügt. Ich hab dann folgenden Code geschrieben:

    MyView.h:

    Code:
    #import <Cocoa/Cocoa.h>
    
    @interface MyView : NSImageView {
        IBOutlet id disp_update;
        int counter;
    }
    @end
    
    MyView.m:

    Code:
    #import "MyView.h"
    
    @implementation MyView
    
    - (void)mouseDown:(NSEvent *)theEvent {
    	counter++;
        [disp_update setIntValue : counter];
    }
    @end
    
    Ich denke, dass der Fehler eher im IB liegt, weil ich damit noch ein bisschen mühe hab. Das Programm startet zwar, aber es ist immer am Aufstarten.

    EDIT: Nun startet es plötzlich, es geschieht jedoch nichts.
     
  12. below

    below Mitglied

    Beiträge:
    13.564
    Zustimmungen:
    1.088
    Mitglied seit:
    15.03.2004
    Kurz: Du musst im IB einen NSImageView nehmen, und dann davon die Custom Class auf MyView setzen.

    Beispiel. Räumst Du morgen meinen Schreibtisch auf?

    Alex
     
  13. allan

    allan Mitglied

    Beiträge:
    273
    Zustimmungen:
    14
    Mitglied seit:
    07.02.2008
    Danke, kann jedes Beispiel gebrauchen :jaja:

    mir kommt Obj-C irgendwie schwerer vor als C# :)shame: - leider @school)
     
  14. mac_in_tosh

    mac_in_tosh Thread Starter Mitglied

    Beiträge:
    217
    Zustimmungen:
    0
    Mitglied seit:
    20.05.2007
    Vielen Dank, das Beispie hat mir sehr geholfen!!! Jetzt gibt es für mich noch 2 offene Fragen.

    1. Wie kann ich an der gecklickten Stelle einen Punkt machen und wie kann ich die Koordinaten abspeichern und den Punkt später wieder anhand der koordinaten zeichnen?

    2. Kann man eine Variable aus Objective-C auch in einem Applescript des Projektes benutzen??

    Vielen Dank
     
  15. allan

    allan Mitglied

    Beiträge:
    273
    Zustimmungen:
    14
    Mitglied seit:
    07.02.2008
    ad 1) dein view hat ne breite und hoehe... die position kann man abfragen... die koordinaten speichert man in nem array ;)

    ich glaube kaum das alex, die jetzt fuer jede frage ein beispiel macht ;)
    such dir einpaar buecher und anleitungen (Apple Dokumentation ist sehr hilfreich)

    und dann klein beginnen... wird schon werden...
     
  16. mac_in_tosh

    mac_in_tosh Thread Starter Mitglied

    Beiträge:
    217
    Zustimmungen:
    0
    Mitglied seit:
    20.05.2007
    Vielen Dank für deine Antwort. Weisst du vielleicht auch mit welchem Befehl ich die Position abfragen kann?? Ich erwarte auch kein Beispiel.:)
     
  17. below

    below Mitglied

    Beiträge:
    13.564
    Zustimmungen:
    1.088
    Mitglied seit:
    15.03.2004
    a) Das kommt darauf an, was es für ein View ist. RTFM ist das Schlagwort
    b) Ja, wie allan sagte, die Speichert man in einem Array. Schönes Beispiel ist in Garfinkel/Mahoney "Building Cocoa Applications". Das bekommt man evtl. noch im modernen Antiquaritat für EUR 5 hinterhergeworfen.

    Ja, man kann (Man kann auch zum Mond fliegen ;) ). Ist aber für einen Anfänger nicht trivial.
    Starting point: http://developer.apple.com/cocoa/applescriptforapps.html

    Bitte. Und was ist mit meinem Schreibtisch ;) ?

    Alex
     
  18. mac_in_tosh

    mac_in_tosh Thread Starter Mitglied

    Beiträge:
    217
    Zustimmungen:
    0
    Mitglied seit:
    20.05.2007
    Vielen Dank. Ich hätte noch eine wirklich kleine Frage.

    Code:
    - (NSPoint)convertPoint:(NSPoint)theEvent fromView:(NSView *)MyView{
    	counter++;
    	[disp_update setIntValue:counter];
    }
    
    Welche Variable muss ich anstatt counter einsetzten, um die Koordinaten zu erhalten??

    P.S:Ich weiss nicht ob dein Schreibtisch ordentlicher ist, wenn ich ihn aufgeräumt habe;)
     
  19. below

    below Mitglied

    Beiträge:
    13.564
    Zustimmungen:
    1.088
    Mitglied seit:
    15.03.2004
    Ich weiss nicht genau, was Du mit - convertPoint: machen willst :noplan:

    Insbesondere ist es nicht klug, convertPoint: zu überschreiben, ohne [super convertPoint ] aufzurufen.

    Die Information, die Du suchst steckt im event von mouseDown:
    RTFM zu NSEvent: http://developer.apple.com/document...lasses/NSEvent_Class/Reference/Reference.html

    Lieber mac_in_tosh, Deine Motivation in allen Ehren, aber Du musst wirklich strukturiert vorgehen!
    Programmieren lernen ist nichts für einen Nachmittag, und ist am Anfang ein steiniger Weg.

    Nimm es mir nicht übel, aber Deine Fragen deuten darauf hin, dass Du planlos in Cocoa herumstocherst.

    Nochmal: Kauf Dir ein gutes Buch und arbeite es durch. Sonst verstehst Du meine Antworten nicht

    Alex
     
  20. mac_in_tosh

    mac_in_tosh Thread Starter Mitglied

    Beiträge:
    217
    Zustimmungen:
    0
    Mitglied seit:
    20.05.2007
    Na gut ich sehe es ein. Vielen Dank für deine Mühe!!!
     
Die Seite wird geladen...

MacUser.de weiterempfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...