Bild im Spiel anzeigen ( GDI ) geht nicht

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

    Bild im Spiel anzeigen ( GDI ) geht nicht

    Hallo ich habe ein Programm mit GDI gebaut um ein Bild zu zeichnen da Formen nicht im spiel in den Vordergrund gesetzt werden können. Jetzt habe ich das Problem das mein programm die Karte zwar zeichnet nur nicht Ingame. Überall anders schon auch ohne game offen 8|

    VB.NET-Quellcode

    1. Imports System.Threading
    2. Imports System
    3. Public Class Form1
    4. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer ' Um Das Fenster zu finden
    5. Dim mythread As System.Threading.Thread
    6. Dim picgrößeX As Integer = My.Resources.bitswarzmap.Size.Width
    7. Dim picgrößeY As Integer = My.Resources.bitswarzmap.Size.Height
    8. Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Int32) As Long
    9. Public Sub anzeigen(ByVal PictureGrößeX As Integer, ByVal picgrößeY As Integer)
    10. Dim g As Graphics = Graphics.FromHwnd(New IntPtr(FindWindow("WarZ", "WarZ"))) ' Prozess finden
    11. Dim posx As Integer = ScreenResolutionX() - PictureGrößeX ' Rechts anordnen
    12. Dim posy As Integer = ScreenResolutionY() - picgrößeY ' unten anordnen
    13. g.DrawImage(My.Resources.bitswarzmap, posx, posy, PictureGrößeX, picgrößeY) ' Bild malen
    14. g.Dispose()
    15. End Sub
    16. Public Function ScreenResolutionX() As Integer
    17. Dim intX As Integer = Screen.PrimaryScreen.Bounds.Width ' Momentaner Screenresolution X finden
    18. Return intX
    19. End Function
    20. Public Function ScreenResolutionY() As Integer
    21. Dim intY As Integer = Screen.PrimaryScreen.Bounds.Height ' Momentaner Screenresolution Y finden
    22. Return intY
    23. End Function
    24. Dim timerstat As Integer = 0
    25. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    26. Me.TopMost = True
    27. If GetAsyncKeyState(Keys.NumPad1) Then
    28. anzeigen(picgrößeX, picgrößeY) ' Funktion zeichnen aufrufen
    29. 'Timer2.Start()
    30. ElseIf GetAsyncKeyState(Keys.NumPad0) Then
    31. Timer1.Stop()
    32. MsgBox("Programm beendet!")
    33. Me.Close()
    34. ElseIf GetAsyncKeyState(Keys.NumPad2) Then
    35. ' Timer2.Stop()
    36. ' Dim rec As New Rectangle(0, 0, ScreenResolutionX, ScreenResolutionY)
    37. ' Me.Invalidate(rec)
    38. End If
    39. End Sub
    40. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    41. Control.CheckForIllegalCrossThreadCalls = False
    42. Timer1.Start() ' Timer starten um Keys zu überprüfen
    43. End Sub
    44. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    45. mythread = New Thread(AddressOf zeigen)
    46. mythread.Start()
    47. End Sub
    48. Public Sub zeigen()
    49. anzeigen(picgrößeX, picgrößeY)
    50. End Sub
    51. End Class


    Bitte um Hilfe :S

    Als Admin schon ausgeführt und getestet? Ja

    Schlammy schrieb:

    Das ist C# -.-
    Ich arbeite mit vb.net
    Ausserdem will ich mich nicht in das Spiel einklinken sondern drüberzeichnen
    .NET ist .NET

    Ansonsten findest Du bei Google Codekonverter.

    Das mit dem Drüberzeichnen funktioniert aber so nunmal nicht, zumindest nicht annehmbar.
    Dafür müsste das Spiel, wie schon gesagt, im Fenstermodus oder "borderless" laufen.

    Du wirst mit der Performance nicht zufrieden sein.
    Das ist C# -.-
    Meine Güte das macht mich echt aggressiv. Ich meine man bekommt halt nicht immer alles Perfekt. Jetzt bekommst du nen Code zum kopieren in C# was auch .NET IST!! Und es sogar nen Converter gibt aber du bist zu faul nen Code zwei mal zu Copy-Pasten. Ich habe kürzlich seit Wochen was gesucht und dann in den tiefen von Google endlich nen Delphi Code gefunde. Habe keine Ahnung von Delphi. Aber entweder du versuchst damit etwas anfangen zu können oder du lässt es bleiben. Bei deiner Einstellung würd ich mir mal überlegen ob du es nicht lässt. (aber dann richtig und alles)


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.