Point auf picture box

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von jansteffen.

    Point auf picture box

    Hallo
    Weiß einer / hat einer einen code
    zu erstellen eines punktes auf einer picture box
    also ich kann den punktn mit der maus bewegen wie bei einem ego shooter
    wie mache ich sowas das ich den punkt bewegen kann und der mir dan die kordinaten in ein label oder textbox gibt

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    hmm ok das mit dem couser könnte ich machen jetzt hab ich
    1 problem
    kann ich das bild also das cursor bild irgendwie in meine project mappe einbinden
    und
    Wie mache ich es dass er mir die mausposition im einem labebl anzeigt also die x position in label 1 und die y in label2
    PictureBox und Label(2) in die Form ziehen.

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. PictureBox1.Cursor = Cursors.Cross
    3. End Sub
    4. Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    5. Label1.Text = "x: " + CStr(e.Location.X)
    6. Label2.Text = "y: " + CStr(e.Location.Y)
    7. End Sub


    Code funktioniert einwandfrei.
    hmm schade

    aber mal noch ne andere frage
    mirt diesem code:

    VB.NET-Quellcode

    1. TextBox1.Text = MousePosition.X
    2. TextBox2.Text = MousePosition.Y

    Setzt der ja die maus an die position aber ich möchte wohl gerne dass er einen roten punkt an die stelle setzt und ich den per button wieder löschen
    kann
    wie geht das?
    hmm
    ich habs jetzt mal anders versucht so:

    VB.NET-Quellcode

    1. OvalShape1.Location.X = TextBox1.Text


    Das kommt ein feler:
    Fehler 1 Der Ausdruck ist ein Wert und kann nicht als Ziel einer Zuweisung verwendet werden.

    und wass mir aufgefallen ist:
    Die picturebox überdeckt den OvalShape1

    wie kann ich das machen
    das 1:
    Der PvalShape1 die position x und y von texbox1 und 2 nimmt
    und das die picture box den nicht bedeckt
    stelle den OvalShape in den Vordergrund(rechte Maustaste)

    VB.NET-Quellcode

    1. 'im Move Event folgendes einfügen:
    2. OvalShape1.Location = e.Location
    3. 'besser wäre allerdings folgendes
    4. Ovalshape1.Location = new Point(e.location.x - OvalShape1.width/2, e.location.y - OvalShape1.Height/2)

    VB.NET-Quellcode

    1. Dim x as integer = picturebox1.size.width
    2. Dim y as integer =picturebox1.size.height
    3. Dim bmp As New Bitmap(x, y)
    4. Dim g As Graphics = Graphics.FromImage(bmp)
    5. Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    6. g.DrawImage(picturebox1.image, 0, 0, x, y)
    7. g.DrawImage(-bild das du als cursor ham willst-, me.mouseposition.x - x, me.mouseposition.y - y)
    8. Picturebox1.image = bmp
    9. End Sub
    Nich getestet sollt aber gehen, wobei du natuerlich -bild das du als cursor ham willst- eben durch dein bild ersetzen solltest
    auf dem ovalshape
    kann ich kein rechts klick machen warum weiß ich nicht auf der picture box ect. geht es

    //edit:
    Habe jetzt auf format dann auf reihen folge und dan in den vorder grund (den ovalshape) aber das wird immer nich von der picture box überdeckt
    Hast du's schon nach der methode von jansteffen probiert:

    VB.NET-Quellcode

    1. Dim x as integer = picturebox1.size.width
    2. Dim y as integer =picturebox1.size.height
    3. Dim bmp As New Bitmap(x, y)
    4. Dim g As Graphics = Graphics.FromImage(bmp)
    5. Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    6. g.DrawImage(picturebox1.image, 0, 0, x, y)
    7. g.DrawImage(-bild das du als cursor ham willst-, me.mouseposition.x - x, me.mouseposition.y - y)
    8. Picturebox1.image = bmp
    9. End Sub
    Ja
    code:

    VB.NET-Quellcode

    1. Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    2. Dim x As Integer = PictureBox1.Size.Width
    3. Dim y As Integer = PictureBox1.Size.Height
    4. Dim bmp As New Bitmap(x, y)
    5. Dim g As Graphics = Graphics.FromImage(bmp)
    6. g.DrawImage(PictureBox1.Image, 0, 0, x, y)
    7. g.DrawImage("C:\Programme\lalla.png", Me.MousePosition.X - TextBox1.Text, Me.MousePosition.Y - TextBox2.Text)
    8. PictureBox1.Image = bmp
    9. End Sub


    Feler:

    Fehler 1 Fehler bei der Überladungsauflösung, da keine zugreifbare "DrawImage" mit diesen Argumenten aufgerufen werden kann:
    'Public Sub DrawImage(image As System.Drawing.Image, x As Integer, y As Integer)': Der Wert vom Typ "String" kann nicht in "System.Drawing.Image" konvertiert werden.
    'Public Sub DrawImage(image As System.Drawing.Image, x As Single, y As Single)': Der Wert vom Typ "String" kann nicht in "System.Drawing.Image" konvertiert werden.

    Warnung:
    Warnung 2 Zugriff des freigegebenen Members, konstanten Members, Enumerationsmembers oder geschachtelten Typs über eine Instanz; der qualifizierende Ausdruck wird nicht ausgewertet.

    Warnung 3 Zugriff des freigegebenen Members, konstanten Members, Enumerationsmembers oder geschachtelten Typs über eine Instanz; der qualifizierende Ausdruck wird nicht ausgewertet.