Bild als Button benutzen, aber nur eine bestimmte Stelle..!



  • Abend,
    hab mal ne Frage,
    wie kann ich in C# eine bestimmte Stelle eines Bildes als Button benutzen..?

    Z.B. habe ein Bild mit der Auflösung von 150x150.
    Will aber, dass man nur eine bestimmte Stelle im Bild ancklicken kann, z.b. 123 bei der x-achse und 102 bei der y-achse..!
    Wie kann ich das mit C# programmieren..?



  • Vllt. hilft eine PictureBox mit OnMouseDown weiter



  • warum nicht an die stelle ein button positionieren und das bild im Z level eins hoeher die ganze flaeche?

    falls das nicht geht (weiss ich grad nicht) wuerde sich ein transparenter button ueber dem bild anbieten



  • MAch eine Picturebutton.
    Im Event bekommt du die Mausposition mit.
    Dort kannst du dann darauf reagieren.



  • wieso hat www.aspnetsoft.de kein impressum? abmahnung gefällig?



  • nimm WPF^^



  • BorisDieKlinge schrieb:

    nimm WPF^^

    und wie wuerdest du es in wpf loesen ? die vorschlaege hier sind doch fuer forms und wpf benutzbar



  • `sorry.. habs nur schnell überlesen.. dachte image im button.. gibts keine transparents UserControl mit Onclick event?



  • du meinst ein control welches das bild und das klick machst ?
    nunja, obs direkt im fenster erledigt wird oder in einem angezeiten user control ist voellig egal #gg

    vermutlich ist es so das beste:
    ein canvas mit der groesse des bildes
    bild rein sodass es ausgefuellt ist
    button rein und mit top+left positionieren
    button transparent machen - am besten noch n eigenen style sodass auch nichts aufblinkt beim windows theme bei mouse over oder aehnliches
    feddich



  • Danke ür eure Anworten..!

    Der Vorschalf von Mr Evil mit dem transparenten button hört sich am einachsten an würde ich mal sagen..!

    Aber mich würde trotzdem interessieren wie ich die Koordinaten (Mausposition) erkunden kann...und somit irgendwie dann weiter zu reagieren..!



  • Servus,

    so wie es Knuddlbaer geschrieben hat. Allerdings habe ich das MouseClick event verwendet. (Vorteil: Reagiert erst nach MouseDown und MouseUp)

    private void OnPictureBoxClick(object sender, MouseEventArgs e)
    {
        if ( ( e.X < 20 ) && ( e.Y < 20 ) )
            MessageBox.Show("Hier wurde geklickt!!");
    }
    

    Der Parameter "e" hat die Mausposition. Jetzt kann nur in der oberen linken Ecke geklickt werden. (In einem Bereich von 20x20 px)

    gruß
    Hellsgore



  • Hellsgore schrieb:

    Servus,

    so wie es Knuddlbaer geschrieben hat. Allerdings habe ich das MouseClick event verwendet. (Vorteil: Reagiert erst nach MouseDown und MouseUp)

    private void OnPictureBoxClick(object sender, MouseEventArgs e)
    {
        if ( ( e.X < 20 ) && ( e.Y < 20 ) )
            MessageBox.Show("Hier wurde geklickt!!");
    }
    

    Der Parameter "e" hat die Mausposition. Jetzt kann nur in der oberen linken Ecke geklickt werden. (In einem Bereich von 20x20 px)

    gruß
    Hellsgore

    Ja ok...danke..! 🙂
    Allerdings funkt. es so wie du es geschrieben hast nicht, weiss so richtig nicht wieso.
    Mit pictureBox1_MouseDown funkt es einwandfrei..!
    Ahh hätte noch ne Frage, nur so aus neugierde, wie kann man ein Kreis mit Coordianten beschreiben, muss doch sicher ne func geben wo man ein coordinate und ein radius angibt und somit ein Kreis berechnet, oder nicht..?



  • @Bonafide: willst du einen Hit-Test mit einem Kreis oder was?
    Falls ja:

    // x, y: zu testende koordinaten
    
    float dx = (float)(kreis_mitte_x - x);
    float dy = (float)(kreis_mitte_y - y);
    float distance_square = dx * dx + dy * dy;
    float radius_square = kreis_radius * kreis_radius;
    if (distance_square <= radius_square)
    {
        // im kreis :)
    }
    

Anmelden zum Antworten