Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 05:07

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



GDI+, gezeichnetes löschen

Discussion on GDI+, gezeichnetes löschen within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
omer36's Avatar
 
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,254
GDI+, gezeichnetes löschen

Hey hey,

ich wollte mich mal bischen mit GDI+ beschäftigen aber fand zu meinem problem keine lösung. undzwar sollte es so aussehen:
von einem bestimmten punkt aus, wird eine linie in richtung der maus gezogen und wenn sich die maus position ändert, zieht die linie mit.

problem ist hier, dass die alten schon gezeichneten linien bestehen bleiben und das soll nicht sein.

hab die gui ma ausn forum übernommen und dann mein teil versucht:

PHP Code:

#include <Misc.au3>
#include <GDIPlus.au3>
#include <WindowsConstants.au3>


Local $hDLL$hGUI$hPen$hBitmap$aMPos_Aktuell$aMPos_neu$mPosOL$mPosUR

_GDIPlus_Startup
()
$hDLL DllOpen("user32.dll")
HotKeySet("{ESC}","_Exit")


$hDummy GUICreate("")
$hGUI GUICreate("", @DesktopWidth, @DesktopHeight00$WS_POPUPBitOR($WS_EX_LAYERED$WS_EX_TOPMOST,$WS_EX_TRANSPARENT),$hDummy)
GUISetBkColor(0xABCDEF$hGUI)
_WinAPI_SetLayeredWindowAttributes($hGUI0xABCDEF255)


$hPen _GDIPlus_PenCreate(0xFFFF0000,3)
$hGraphics _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hBitmap _GDIPlus_BitmapCreateFromGraphics(@DesktopWidth, @DesktopHeight$hGraphics)
$hBackBuffer _GDIPlus_ImageGetGraphicsContext($hBitmap)
GUISetState()


While 
Sleep(10)
    
$aMPos_Aktuell MouseGetPos()
    If 
_IsPressed(61Then $mPosOL MouseGetPos()
    If 
_IsPressed(62Then $mPosUR MouseGetPos()

    If 
IsArray($mPosOL) And IsArray($mPosURThen
        _GDIPlus_GraphicsDrawRect
($hGraphics,  $mPosOL[0], $mPosOL[1], $mPosUR[0]-$mPosOL[0], $mPosUR[1]-$mPosOL[1], $hPen)
        
_GDIPlus_GraphicsDrawLine($hGraphics, (($mPosUR[0]-$mPosOL[0])/2)+$mPosOL[0], $mPosUR[1], $aMPos_Aktuell[0], $aMPos_Aktuell[1], $hPen)
        
$aMPos_neu MouseGetPos()
        If 
$aMPos_Aktuell[0] <> $aMPos_neu[0] Or $aMPos_Aktuell[1] <> $aMPos_neu[1Then    ;
        
_GDIPlus_GraphicsClear($hBackBuffer)                                                ;ist das nicht der richtige befehl?
        
$aMPos_Aktuell $aMPos_neu                                                            ;
        EndIf
    EndIf


WEnd


Func _Exit
()
    
_GDIPlus_GraphicsDispose($hGraphics)
    
_GDIPlus_BitmapDispose($hBitmap)
    
_GDIPlus_PenDispose($hPen)
    
GUIDelete($hGUI)
    
DllClose($hDLL)
    Exit
EndFunc 
steuerung: numpad1 drucken (oben links aufn bildschirm) und numpad2 (unten rechts)

wie gesagt, hab mich eig. nie wirklich mit gdi+ beschäftigt und falls drin "drastische" fehler sind, bitte korregieren und sagen ^^


MfG

omer36
omer36 is offline  
Old 09/26/2011, 06:24   #2
 
BlackHybrid's Avatar
 
elite*gold: 52
The Black Market: 101/0/0
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
Mit _WinAPI_RedrawWindow($hgui) müsstest du eigentlich das geschriebene wieder entfernen können.
BlackHybrid is offline  
Old 09/26/2011, 17:18   #3
 
V8II's Avatar
 
elite*gold: 0
Join Date: Jul 2010
Posts: 475
Received Thanks: 130
Dann flackert es wie er im Autoit Forum schreibt ^^

Ich habe mir per Paint immer ein schönes weißes Bild gemacht und alles übermalt. Grundsätzlich gibt es in Autoit leider keine immer funktionierende Funktion die alles löscht, das ist allerdings sowieso nicht nötig. Einfach drübermalen.
V8II is offline  
Old 09/27/2011, 18:38   #4
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Quote:
Originally Posted by V8II View Post
Dann flackert es wie er im Autoit Forum schreibt ^^

Ich habe mir per Paint immer ein schönes weißes Bild gemacht und alles übermalt. Grundsätzlich gibt es in Autoit leider keine immer funktionierende Funktion die alles löscht, das ist allerdings sowieso nicht nötig. Einfach drübermalen.
Das stimmt so nicht.
Es flackert auch nur so, weil zuerst alles gelöscht wird und dann erstellt und dann gezeichnet wird.
Lässt man alles schon in einem Zwischenspeicher erstellen und malt es dann auf den Bildschirm flackert es überhaupt nicht (siehe meine GameEngine).
Shadow992 is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
ACC Löschen?
07/31/2011 - Main - 4 Replies
Hallo :) Ich habe mich ein wenig in diesem Forum umgesehen , und hatte es anderes erwartet wie es mein Klassenkamerad beschrieben hatte. Nun möchte ich meinen Account löschen, damit der Name für andere wieder zur Verfügung steht. Würde mich über Hilfe freuen :)
Etwas gezeichnetes als Nicht gezeichnetes rüberkommen lassen
12/07/2010 - General Art - 6 Replies
Hallo Die Überschrift ist glaube ich nicht die richtige, dafür was ich meine :D Erkläre es euch hier einmal. Unzwar wollte ich nun Bild malen, MMORPG GAME Ich habe dazu schon ein paar gute Vorlagen, Malerische vorraussetzung ist auch gegeben!
[Codeschnipsel]Eleganteres löschen (syslogs löschen)
10/23/2010 - Metin2 PServer Guides & Strategies - 8 Replies
Guten Tag E*pvp, als ich das Thema von .RiisK# gesehen habe, dachte ich mir, stelle ich auch mal meine variante vor, ganz leicht eig per google zu finden ("Freebsd find and delete files" oder so) das script sucht die genannten dateien und löscht diese anschließend. #!/bin/sh find /pfad/zum/sf/main/verzeichnis/ -maxdepth 7 -name "PTS" | xargs rm -rf find /pfad/zum/sf/main/verzeichnis/ -maxdepth 7 -name "stdout" | xargs rm -rf find /pfad/zum/sf/main/verzeichnis/ -maxdepth 7 -name...



All times are GMT +2. The time now is 05:07.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.