_gdiplus fehler?

  • will einen berrechner für ein spiel machen aber die gdi graohic wird auf einer seite nicht angezeigt.
    hoffe ihr könnt mir helfen.

    Spoiler anzeigen
    [autoit]

    ;#NoTrayIcon
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    ;(1400/2.5)/(2400/2.5))

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Fenster = GUICreate("",1000,40, 100, 250, $WS_POPUP)
    GUISetState()
    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Fenster)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(600, 600, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    $messung = 0
    $messung2 = 0
    $sss = 0
    $gesammtschild = 1200000;262500
    $Schild = $gesammtschild
    $gesammthitpoints = 1600000;281000
    $hitpoints = $gesammthitpoints
    $hasu = 1
    $hasu2 = 1
    $schaden = (41697 +27738 *2)/3
    $damage = 0
    $s = 0
    $minuten = 0
    $sekunden = 0
    $konfi = "ein."
    $konfi_1 = 0
    $skylab = "aus"
    While 1
    $messung = $messung + 1
    If $messung = 121 Then $messung = 120
    $messung2 = $messung2 + 1
    If $messung2 = 121 Then $messung2 = 120
    $Schild = $Schild - $schaden * 0.8
    If $schild >= 0 Then $hitpoints = $hitpoints - $schaden*0.20
    If $schild <= 1 Then $hitpoints = $hitpoints - $schaden
    $damage = $damage + $schaden
    $sss = $sss + 1
    $sekunden = $sekunden + 1
    If $schild <= 1 And $konfi_1 = 0 And $konfi = "ein" Then
    $konfi_1 = 1
    $schild = $gesammtschild
    EndIf
    If $skylab = "ein" Then
    If $schild <= $gesammtschild -72000 And $hasu = 1 Then
    $schild = $schild +72000
    $hasu = 0
    $messung = 0
    EndIf
    If $messung = 120 And $schild + 72000 <= $gesammtschild + 1 Then
    $schild = $schild + 72000
    $messung = 0
    EndIf
    If $hasu2 = 1 And $hitpoints + 100000 - $schaden*11*0.2 <= $gesammthitpoints +1 Then
    $hasu2 = 0
    $messung2 = -10
    EndIf
    If $messung2 = 120 And $hitpoints + 100000 -$schaden*11*0.2 <= $gesammthitpoints + 1 Then
    $messung2 = -10
    EndIf
    If $messung2 <= 0 Then
    $hitpoints = $hitpoints + 10000
    EndIf
    EndIf
    If $hitpoints <= 1 Then
    If $sss >= 60 Then
    $ssas = 0
    While $ssas <= 5
    $s = $s + 1
    If $s >= $sss / 60 Then
    $ssas = 77
    $minuten = $s - 1
    $sekunden = $sss - $minuten * 60
    EndIf
    WEnd
    EndIf
    MsgBox(0,"","Sie würden, bei einem Schaden von " & $schaden & ", " & $minuten & " Minuten und " & $sekunden & " Sekunden überleben. Der Gesammtschaden beträgt " & $damage)
    Exit
    EndIf
    $hbrushblau = _GDIPlus_BrushCreateSolid(0xFF0000FF)
    $hbrushrot = _GDIPlus_BrushCreateSolid(0xFFFF4040)
    $hbrushgelb = _GDIPlus_BrushCreateSolid(0xFFFFFF00)
    _GDIPlus_GraphicsFillRect($hbuffer,0,0,1500,1400,$hbrushgelb)
    _GDIPlus_GraphicsFillRect($hbuffer,0,0,$hitpoints/562,20,$hbrushrot)
    _GDIPlus_GraphicsFillRect($hbuffer,0,20,$schild/525,20,$hbrushblau)
    _GDIPlus_GraphicsFillRect($hbuffer,500,0,$hitpoints2/562,20,$hbrushrot)
    _GDIPlus_GraphicsFillRect($hbuffer,500,20,$schild2/525,20,$hbrushblau)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 600, 600)
    Sleep(1000)
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von manuel6000 (21. Mai 2011 um 23:43)

  • Wie wäre es mit einem lauffähigen Script? Abgesehen davon weiß ich nicht was du mit "Seite" meinst. Eine Internetseite? Die rechte Seite? Die Schreibtischunterseite? :huh:
    Dein Code ist absolut unübersichtlich und unlogisch. Du erstellst Brushes laufend in einer Endlosschleife neu, du räumst keine deiner Daten wieder aus dem Arbeitsspeicher auf etc.

  • und wie räum ich die raus und der skript ist lauffähig der berrechnet was

  • das aus dem arbeitsspeicher
    ich kireg D:\-- ----\sad.au3 - 0 error(s), 0 warning(s)

  • Zitat

    ich kireg D:\-- ----\sad.au3 - 0 error(s), 0 warning(s)


    Ich "kireg" immer noch 2 Errors, also hast du offensichtlicherweise ein anderes Script als ich.
    Und wie du die Daten aus dem Arbeitsspeicher entfernst steht in Ubuntus GDI+ Tutorial.

  • Spoiler anzeigen
    [autoit]

    ;#NoTrayIcon
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    ;(1400/2.5)/(2400/2.5))

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Fenster = GUICreate("",500,40, 100, 250, $WS_POPUP)
    GUISetState()
    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Fenster)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(600, 600, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    $messung = 0
    $messung2 = 0
    $sss = 0
    $gesammtschild = 1200000;262500
    $Schild = $gesammtschild
    $gesammthitpoints = 1600000;281000
    $hitpoints = $gesammthitpoints
    $hasu = 1
    $hasu2 = 1
    $schaden = (41697 +27738 *2)/3
    $damage = 0
    $s = 0
    $minuten = 0
    $sekunden = 0
    $konfi = "ein."
    $konfi_1 = 0
    $skylab = "aus"
    While 1
    $messung = $messung + 1
    If $messung = 121 Then $messung = 120
    $messung2 = $messung2 + 1
    If $messung2 = 121 Then $messung2 = 120
    $Schild = $Schild - $schaden * 0.8
    If $schild >= 0 Then $hitpoints = $hitpoints - $schaden*0.20
    If $schild <= 1 Then $hitpoints = $hitpoints - $schaden
    $damage = $damage + $schaden
    $sss = $sss + 1
    $sekunden = $sekunden + 1
    If $schild <= 1 And $konfi_1 = 0 And $konfi = "ein" Then
    $konfi_1 = 1
    $schild = $gesammtschild
    EndIf
    If $skylab = "ein" Then
    If $schild <= $gesammtschild -72000 And $hasu = 1 Then
    $schild = $schild +72000
    $hasu = 0
    $messung = 0
    EndIf
    If $messung = 120 And $schild + 72000 <= $gesammtschild + 1 Then
    $schild = $schild + 72000
    $messung = 0
    EndIf
    If $hasu2 = 1 And $hitpoints + 100000 - $schaden*11*0.2 <= $gesammthitpoints +1 Then
    $hasu2 = 0
    $messung2 = -10
    EndIf
    If $messung2 = 120 And $hitpoints + 100000 -$schaden*11*0.2 <= $gesammthitpoints + 1 Then
    $messung2 = -10
    EndIf
    If $messung2 <= 0 Then
    $hitpoints = $hitpoints + 10000
    EndIf
    EndIf
    If $hitpoints <= 1 Then
    If $sss >= 60 Then
    $ssas = 0
    While $ssas <= 5
    $s = $s + 1
    If $s >= $sss / 60 Then
    $ssas = 77
    $minuten = $s - 1
    $sekunden = $sss - $minuten * 60
    EndIf
    WEnd
    EndIf
    MsgBox(0,"","Sie würden, bei einem Schaden von " & $schaden & ", " & $minuten & " Minuten und " & $sekunden & " Sekunden überleben. Der Gesammtschaden beträgt " & $damage)
    _Exit()
    EndIf
    $hbrushblau = _GDIPlus_BrushCreateSolid(0xFF0000FF)
    $hbrushrot = _GDIPlus_BrushCreateSolid(0xFFFF4040)
    $hbrushgelb = _GDIPlus_BrushCreateSolid(0xFFFFFF00)
    _GDIPlus_GraphicsFillRect($hbuffer,0,0,1500,1400,$hbrushgelb)
    _GDIPlus_GraphicsFillRect($hbuffer,0,0,$hitpoints/562,20,$hbrushrot)
    _GDIPlus_GraphicsFillRect($hbuffer,0,20,$schild/525,20,$hbrushblau)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 600, 600)
    Sleep(1000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _exit()
    _GDIPlus_GraphicsDispose($hgraphic)
    _GDIPlus_GraphicsDispose($hbuffer)
    _GDIPlus_BitmapDispose($hbitmap)
    _GDIPlus_Shutdown()
    EndFunc

    [/autoit]

    so aber das dritte und das vierte rechteck ist aber immer noch unsichtbar

  • jezt aber

    Spoiler anzeigen
    [autoit]

    ;#NoTrayIcon
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    ;(1400/2.5)/(2400/2.5))

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Fenster = GUICreate("",1000,40, 100, 250, $WS_POPUP)
    GUISetState()
    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Fenster)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(600, 600, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    $messung = 0
    $messung2 = 0
    $sss = 0
    $gesammtschild = 1200000;262500
    $Schild = $gesammtschild
    $gesammthitpoints = 1600000;281000
    $hitpoints = $gesammthitpoints
    $hasu = 1
    $hasu2 = 1
    $schaden = (41697 +27738 *2)/3
    $damage = 0
    $s = 0
    $minuten = 0
    $sekunden = 0
    $konfi = "ein."
    $konfi_1 = 0
    $skylab = "aus"
    $messung3 = 0
    $messung3 = 0
    $sss2 = 0
    $gesammtschild2 = 1200000;262500
    $Schild2 = $gesammtschild2
    $gesammthitpoints2 = 1600000;281000
    $hitpoints2 = $gesammthitpoints2
    $hasu3 = 1
    $hasu4 = 1
    $schaden2 = (41697 +27738 *2)/3
    $damage2 = 0
    $s2 = 0
    While 1
    $messung = $messung + 1
    If $messung = 121 Then $messung = 120
    $messung2 = $messung2 + 1
    If $messung2 = 121 Then $messung2 = 120
    $Schild = $Schild - $schaden * 0.8
    If $schild >= 0 Then $hitpoints = $hitpoints - $schaden*0.20
    If $schild <= 1 Then $hitpoints = $hitpoints - $schaden
    $damage = $damage + $schaden
    $sss = $sss + 1
    $sekunden = $sekunden + 1
    If $schild <= 1 And $konfi_1 = 0 And $konfi = "ein" Then
    $konfi_1 = 1
    $schild = $gesammtschild
    EndIf
    If $skylab = "ein" Then
    If $schild <= $gesammtschild -72000 And $hasu = 1 Then
    $schild = $schild +72000
    $hasu = 0
    $messung = 0
    EndIf
    If $messung = 120 And $schild + 72000 <= $gesammtschild + 1 Then
    $schild = $schild + 72000
    $messung = 0
    EndIf
    If $hasu2 = 1 And $hitpoints + 100000 - $schaden*11*0.2 <= $gesammthitpoints +1 Then
    $hasu2 = 0
    $messung2 = -10
    EndIf
    If $messung2 = 120 And $hitpoints + 100000 -$schaden*11*0.2 <= $gesammthitpoints + 1 Then
    $messung2 = -10
    EndIf
    If $messung2 <= 0 Then
    $hitpoints = $hitpoints + 10000
    EndIf
    EndIf
    If $hitpoints <= 1 Then
    If $sss >= 60 Then
    $ssas = 0
    While $ssas <= 5
    $s = $s + 1
    If $s >= $sss / 60 Then
    $ssas = 77
    $minuten = $s - 1
    $sekunden = $sss - $minuten * 60
    EndIf
    WEnd
    EndIf
    MsgBox(0,"","Sie würden, bei einem Schaden von " & $schaden & ", " & $minuten & " Minuten und " & $sekunden & " Sekunden überleben. Der Gesammtschaden beträgt " & $damage)
    _Exit()
    EndIf
    $hbrushblau = _GDIPlus_BrushCreateSolid(0xFF0000FF)
    $hbrushrot = _GDIPlus_BrushCreateSolid(0xFFFF4040)
    $hbrushgelb = _GDIPlus_BrushCreateSolid(0xFFFFFF00)
    _GDIPlus_GraphicsFillRect($hbuffer,0,0,1500,1400,$hbrushgelb)
    _GDIPlus_GraphicsFillRect($hbuffer,0,0,$hitpoints/562,20,$hbrushrot)
    _GDIPlus_GraphicsFillRect($hbuffer,0,20,$schild/525,20,$hbrushblau)
    _GDIPlus_GraphicsFillRect($hbuffer,500,0,$hitpoints2/562,20,$hbrushrot)
    _GDIPlus_GraphicsFillRect($hbuffer,500,20,$schild2/525,20,$hbrushblau)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 600, 600)
    Sleep(1000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _exit()
    _GDIPlus_GraphicsDispose($hgraphic)
    _GDIPlus_GraphicsDispose($hbuffer)
    _GDIPlus_BitmapDispose($hbitmap)
    _GDIPlus_BrushDispose ($hBrushrot)
    _GDIPlus_BrushDispose ($hBrushblau)
    _GDIPlus_BrushDispose ($hBrushgelb)
    _GDIPlus_Shutdown()
    exit
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von manuel6000 (21. Mai 2011 um 22:51)

  • ok hab das mit dem exit bearbeitet aber bei dem einen sind doch die coordinaten 0 und beim anderen 500 wie kann das überreinander sein?

    [autoit]

    _GDIPlus_GraphicsFillRect($hbuffer,0,0,$hitpoints/562,20,$hbrushrot)
    _GDIPlus_GraphicsFillRect($hbuffer,0,20,$schild/525,20,$hbrushblau)
    _GDIPlus_GraphicsFillRect($hbuffer,500,0,$hitpoints2/562,20,$hbrushrot)
    _GDIPlus_GraphicsFillRect($hbuffer,500,20,$schild2/525,20,$hbrushblau)

    [/autoit]
  • Spoiler anzeigen
    [autoit]

    ;#NoTrayIcon
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiStatusBar.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    ;(1400/2.5)/(2400/2.5))

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Fenster = GUICreate("",1000,40, 100, 250, $WS_POPUP)
    GUISetState()
    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Fenster)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(600, 600, $hGraphic)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    $messung = 0
    $messung2 = 0
    $sss = 0
    $gesammtschild = 1200000;262500
    $Schild = $gesammtschild
    $gesammthitpoints = 1600000;281000
    $hitpoints = $gesammthitpoints
    $hasu = 1
    $hasu2 = 1
    $schaden = (41697 +27738 *2)/3
    $damage = 0
    $s = 0
    $minuten = 0
    $sekunden = 0
    $konfi = "ein."
    $konfi_1 = 0
    $skylab = "aus"
    $messung3 = 0
    $messung3 = 0
    $sss2 = 0
    $gesammtschild2 = 1200000;262500
    $Schild2 = $gesammtschild2
    $gesammthitpoints2 = 1600000;281000
    $hitpoints2 = $gesammthitpoints2
    $hasu3 = 1
    $hasu4 = 1
    $schaden2 = (41697 +27738 *2)/3
    $damage2 = 0
    $s2 = 0
    While 1
    $messung = $messung + 1
    If $messung = 121 Then $messung = 120
    $messung2 = $messung2 + 1
    If $messung2 = 121 Then $messung2 = 120
    $Schild = $Schild - $schaden * 0.8
    If $schild >= 0 Then $hitpoints = $hitpoints - $schaden*0.20
    If $schild <= 1 Then $hitpoints = $hitpoints - $schaden
    $damage = $damage + $schaden
    $sss = $sss + 1
    $sekunden = $sekunden + 1
    If $schild <= 1 And $konfi_1 = 0 And $konfi = "ein" Then
    $konfi_1 = 1
    $schild = $gesammtschild
    EndIf
    If $skylab = "ein" Then
    If $schild <= $gesammtschild -72000 And $hasu = 1 Then
    $schild = $schild +72000
    $hasu = 0
    $messung = 0
    EndIf
    If $messung = 120 And $schild + 72000 <= $gesammtschild + 1 Then
    $schild = $schild + 72000
    $messung = 0
    EndIf
    If $hasu2 = 1 And $hitpoints + 100000 - $schaden*11*0.2 <= $gesammthitpoints +1 Then
    $hasu2 = 0
    $messung2 = -10
    EndIf
    If $messung2 = 120 And $hitpoints + 100000 -$schaden*11*0.2 <= $gesammthitpoints + 1 Then
    $messung2 = -10
    EndIf
    If $messung2 <= 0 Then
    $hitpoints = $hitpoints + 10000
    EndIf
    EndIf
    If $hitpoints <= 1 Then
    If $sss >= 60 Then
    $ssas = 0
    While $ssas <= 5
    $s = $s + 1
    If $s >= $sss / 60 Then
    $ssas = 77
    $minuten = $s - 1
    $sekunden = $sss - $minuten * 60
    EndIf
    WEnd
    EndIf
    MsgBox(0,"","Sie würden, bei einem Schaden von " & $schaden & ", " & $minuten & " Minuten und " & $sekunden & " Sekunden überleben. Der Gesammtschaden beträgt " & $damage)
    _Exit()
    EndIf
    $hbrushblau = _GDIPlus_BrushCreateSolid(0xFF0000FF)
    $hbrushrot = _GDIPlus_BrushCreateSolid(0xFFFF4040)
    $hbrushgelb = _GDIPlus_BrushCreateSolid(0xFFFFFF00)
    _GDIPlus_GraphicsFillRect($hbuffer,0,0,1500,1400,$hbrushgelb)
    _GDIPlus_GraphicsFillRect($hbuffer,0,0,$hitpoints/562,20,$hbrushrot)
    _GDIPlus_GraphicsFillRect($hbuffer,0,20,$schild/525,20,$hbrushblau)
    _GDIPlus_GraphicsFillRect($hbuffer,500,0,$hitpoints2/562,20,$hbrushblau)
    _GDIPlus_GraphicsFillRect($hbuffer,500,20,$schild2/525,20,$hbrushrot)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 1000, 600)
    Sleep(1000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _exit()
    _GDIPlus_GraphicsDispose($hgraphic)
    _GDIPlus_GraphicsDispose($hbuffer)
    _GDIPlus_BitmapDispose($hbitmap)
    _GDIPlus_BrushDispose ($hBrushrot)
    _GDIPlus_BrushDispose ($hBrushblau)
    _GDIPlus_BrushDispose ($hBrushgelb)
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit]
  • vorher bei einer bitmap von 600 waren die koordinaten 500 weiter vorne als jezt stell einfach mal auf 600 zurück dann merkst es