1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Andy

Beiträge von Andy

  • etwas bewegen lassen

    • Andy
    • 8. Februar 2011 um 22:26

    ....wenns nur ums bewegen geht...

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>

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

    $anz = 10

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

    Global $button[$anz + 1], $x[$anz + 1], $y[$anz + 1]
    $gui = GUICreate("Test", 600, 600)
    For $i = 1 To $anz
    $button[$i] = GUICtrlCreateButton($i, 10 + Random(20, 500, 1), 10 + Random(20, 500, 1), 20, 20)
    Next
    GUISetState(@SW_SHOW, $gui)

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

    $variable = 0
    AdlibRegister("_move", 1000)

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

    While guigetmsg()<>-3
    For $i = 1 To $anz
    $a = ControlGetPos($gui, "Test", $button[$i])
    If $a[0] < 10 Then $x[$i] = -$x[$i]
    If $a[1] < 10 Then $y[$i] = -$y[$i]
    If $a[0] > 490 Then $x[$i] = -$x[$i]
    If $a[1] > 490 Then $y[$i] = -$y[$i]
    ControlMove("Test", "", $button[$i], $a[0] + $x[$i], $a[1] + $y[$i], $a[0] / 10, $a[0] / 10)
    Next
    WEnd
    Exit

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

    Func _move()
    For $i = 1 To $anz
    $x[$i] = Random(-2, +2, 1)
    $y[$i] = Random(-2, +2, 1)
    Next
    _WinAPI_RedrawWindow($gui)
    EndFunc ;==>_move

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Xfire Spiele Erkennung

    • Andy
    • 8. Februar 2011 um 19:55
    Zitat

    Okey ich hab mir gerit scheinbar kann mand och die ip rausfinden leider aber nicht mit netstat .....

    netstat -b listet die Verbindungen der einzelnen Programme

  • DeskStream 2 Release Candidate 1.8

    • Andy
    • 8. Februar 2011 um 19:40
    Zitat

    Der Server braucht seine eigene IP, damit er weiß, auf welcher Netzwerkkarte er arbeiten soll. Ein PC kann ja mehrere Karten und IPs besitzen.

    wenn du beim DeskStream-Client die Combobox aufmachst, ist neben deiner "eigentlichen" IP-Adresse auch noch mindestens eine andere, nämlich localhost 127.0.0.1 (eine "virtuelle" Netzwerkkarte, s. loopback)
    Alle weiteren IP´s, z.B. von anderen Netzwerkkarten oder auch VM´s (so diese denn übers Netz ansprechbar sind) sind dort auch eingetragen.
    Wie prog@ndy schon schrieb, nimmt der Server nur Anfragen an seine IP entgegen. Wenn du Deskstream auf einem Rechner testen willst, kompiliere den Server und starte ihn vor dem Client. Wenn beide localhost benutzen, funktioniert Deskstream einwandfrei. Genauso, wenn du bei beiden Scripten deine "richtige" IP einträgst, z.B. 192.168.4.100. Wenn du nun den Server auf deine IP einstellst, aber den Client auf localhost benutzen willst, funktioniert die Verbindung NICHT mehr! Obwohl doch beide auf dem selben Rechner arbeiten ^^

  • Zufallsmuster

    • Andy
    • 8. Februar 2011 um 12:52
    Zitat

    kann es sein, dass "sub eax,1" schneller ist als "dec eax"
    (nur als bsp mit eax.)

    zum optimieren stoppe ich Schleifen aus, und zwar in der realen Anwendung. Da die modernen Prozessoren intern die Befehle auf verschiedene Pipelines umsortieren um so auch wesentlich besser auf Abhängigkeiten zu reagieren, kann es sein, dass ein "langsamer" Befehl (mit z.B. einem oder 2 Takten mehr) im Endeffekt das Programm schneller ablaufen lässt, weil er in einer anderen execution unit (und somit parallel) abgearbeitet wird! Und ich habe auch schon bemerkt, dass das weglassen von Befehlen Programme langsamer gemacht hat!

    Daher ist es auch Quatsch, ein for/to mit einer Million Schleifendurchläufen zu machen, und in der Schleife steht dann nur ein DEC eax oder SUB eax,1. Das optimiert der Prozessor nämlich völlig an der Realität vorbei!

    Also vor und nach einer Schleife ein RDTSC, dann hat man die Takte relativ gut ausgestoppt, je länger die Schleife, desto besser!

    Code
    RDTSC ;Read time-stamp counter into EDX:EAX
    push eax  ;counter speichern
    
    
    _loop:
    blablub..reelle Anwendung
    jnz _loop:
    
    
    RDTSC ;neuen counter holen
    pop ebx  ; alten counter laden
    sub eax,ebx  ;differenz in takten
    ret
    Alles anzeigen
  • Kleinster HD-Kurzfilm

    • Andy
    • 7. Februar 2011 um 20:26

    Ich vermute, daß in diesem Sinne garkeine verwendbaren "Bitmaps" generiert werden, sondern die Shader anhand einer "Vorschrift" (wie ein Fraktal) das nächste Bild aus dem vorherigen Bild erzeugen. Im Framebuffer der Grafikkarte also. Daher kann man natürlich auch nicht vor- oder zurückspulen!
    Weiterhin ist es so, dass die Renderengine (auch bei den 4K-Demos) mit im Code steckt! Die Engine selbst ist nur 200-300Byte gross!
    Mittlerweile gibt es Diskussionen, ob "externe" API-Calls erlaubt sein sollten. Bei den Cracks herrscht aber die einhellige Meinung, dass eine Demo nicht besser würde, nur weil man 200 Bytes im Quellcode spart!

    Übrigens gute Nachrichten an die C-Coder! Heutzutage sind die meisten Demos mit C geschrieben. Auch damit kann man Bits zusammenschieben und z.B. eine Reihe floats auf je 4 Bit länge "einstampfen" :D

    Zitat von Moritz1243

    wenn man das so sieht, merkt man wie wenig man eigentich über das Programmieren weiß.

    .... jeden Tag merke ich, wie wenig ich eigentlich übers Programmieren weiss...:D

  • Zufallsmuster

    • Andy
    • 7. Februar 2011 um 18:59

    Hi,

    Wahnsinn, was die trigonometrischen Funktionen für eine Performance fressen!
    Selbst durch komplett im Copro-Stack laufender Schleife(n) und ohne Verwendung zusätzlichen Speichers (also auch kein schreiben/lesen) ackert der Prozessor wie blöd....

    Spoiler anzeigen
    [autoit]

    #include "AssembleIt.au3"
    #include <GDIPlus.au3>
    #include <WindowsConstants.au3>

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

    ;in der Funktion _CreateNewBmp32() bitte
    ;entweder Structmember ändern in biSize, biWidth usw. , oder 3.3.8.1 verwenden, DANKE AUTOIT_DEV´S!!!
    ;##########################

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

    Local $bmp, $lock, $w = 500, $h = 500
    _GDIPlus_Startup()

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

    $hgui = GUICreate("", $w, $h)
    GUISetState()
    $DC_gui = _WinAPI_GetDC($hgui)

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

    Global $ptr, $hbmp
    $DC_bitmap = _CreateNewBmp32($w, $h, $ptr, $hbmp)

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

    Global $tCodeBuffer = DllStructCreate("byte[91]") ;reserve Memory for opcodes
    DllStructSetData($tCodeBuffer, 1, "0x9BDBE38B7424048B5424088B7C240C4ADB442408DB442404D9E8D944241089F1D9C2D9C4D8CAD9C0D9FED8CADB1FD9C0D9FFD8CADB5F01D9C0D9F2DDD8D8CADB5F02DDD8D8E283C7044975D6DDD8D9CBD8E1D9CB4A75C79BDBE3C3") ;write opcodes into memory

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

    $i = 0
    $t = TimerInit()
    For $bildwert = 6.25 To 6.3 Step 0.00033
    $i += 1
    ; $_assembleit_flag = 0
    ; Local $ret = _AssembleIt("float", "F", "int", $w, "int", $h, "ptr", $ptr, "float", $bildwert);stride,width,height,scan0,wert
    $ret = DllCall("user32.dll", "float", "CallWindowProcW", "ptr", DllStructGetPtr($tCodeBuffer), "int", $w, "int", $h, "ptr", $ptr, "float", $bildwert)
    _WinAPI_BitBlt($DC_gui, 0, 0, $w, $h, $DC_bitmap, 0, 0, $srccopy)
    Next
    $m = TimerDiff($t)
    MsgBox(0, "FPS=" & Int($i / $m * 1000), "Anzahl frames: " & $i)

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

    While GUIGetMsg() <> -3
    WEnd

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

    _DeleteBitmap32($DC_bitmap,$ptr,$hbmp)
    ;##########################

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

    Exit

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

    Func _CreateNewBmp32($iwidth, $iheight, ByRef $ptr, ByRef $hbmp) ;erstellt leere 32-bit-Bitmap; Rückgabe $HDC und $ptr und handle auf die Bitmapdaten
    $hcdc = _WinAPI_CreateCompatibleDC(0) ;Desktop-Kompatiblen DeviceContext erstellen lassen
    $tBMI = DllStructCreate($tagBITMAPINFO) ;Struktur der Bitmapinfo erstellen und Daten eintragen
    DllStructSetData($tBMI,1, DllStructGetSize($tBMI) - 4);Structgröße abzüglich der Daten für die Palette
    DllStructSetData($tBMI, 2, $iwidth)
    DllStructSetData($tBMI, 3, -$iheight) ;minus =standard = bottomup
    DllStructSetData($tBMI, 4, 1)
    DllStructSetData($tBMI, 5, 32) ;32 Bit = 4 Bytes => AABBGGRR
    $adib = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBMI), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'uint', 0)
    $hbmp = $adib[0] ;hbitmap handle auf die Bitmap, auch per GDI+ zu verwenden
    $ptr = $adib[4] ;pointer auf den Anfang der Bitmapdaten, vom Assembler verwendet
    _WinAPI_SelectObject($hcdc, $hbmp) ;objekt hbitmap in DC
    Return $hcdc ;DC der Bitmap zurückgeben
    EndFunc ;==>_CreateNewBmp32

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

    Func _DeleteBitmap32($DC, $ptr, $hbmp)
    _WinAPI_DeleteDC($DC)
    _WinAPI_DeleteObject($hbmp)
    $ptr = 0
    EndFunc ;==>_DeleteBitmap32

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

    ;~ Func F()
    ;~ _("use32")
    ;~ ; _("org " & FasmGetBasePtr($Fasm))
    ;~ _("finit") ;Co Prozessor starten
    ;~ ;
    ;~ _("mov esi,[esp+4]") ;w
    ;~ _("mov edx,[esp+8]") ;h
    ;~ _("mov edi,[esp+12]") ;scan0

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

    ;~ _("dec edx")
    ;~ ;register im coprostack belegen,
    ;~ _("fild dword[esp+8]") ;h
    ;~ _("fild dword[esp+4]") ;w
    ;~ _("fld1") ;st0=1
    ;~ _("fld dword[esp+16]") ;st0=start st1=1.0 st2=w st3=h

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

    ;~ _("for_y:") ;Schleifenlabel
    ;~ _("mov ecx,esi") ;Schleifenzähler ecx für x
    ;~ _("fld st2") ;st0=x st1=start st2=1 st3=w st4=h
    ;~ _("for_x:") ;Schleifenlabel
    ;~ ;Berechung
    ;~ ;st0=x st1=start st2=1 st3=w st4=h

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

    ;~ _("fld st4") ;st0=y st1=x st2=start st3=1 st4=w st5=h
    ;~ _("fmul st0,st2") ;st0=y*start st1=x st2=start st3=1 st4=w st5=h
    ;~ _("fld st0") ;st0=y*start st1=y*start st2=x st3=start st4=1 st5=w st6=h
    ;~ _("fsin") ;st0=sin(y*start) st1=y*start st2=x st3=start st4=1 st5=w st6=h
    ;~ _("fmul st0,st2") ;st0=x*sin(y*start) st1=y*start st2=x st3=start st4=1 st5=w st6=h
    ;~ ;BB speichern im pixel
    ;~ _("fistp dword[edi]") ;st0=y*start st1=x st2=start st3=1 st4=w st5=h

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

    ;~ _("fld st0") ;st0=y*start st1=y*start st2=x st3=start st4=1 st5=w st6=h
    ;~ _("fcos") ;st0=cos(y*start) st1=y*start st2=x st3=start st4=1 st5=w st6=h
    ;~ _("fmul st0,st2") ;st0=x*cos(y*start) st1=y*start st2=x st3=start st4=1 st5=w st6=h
    ;~ ;GG speichern im pixel
    ;~ _("fistp dword[edi+1]") ;st0=y*start st1=x st2=start st3=1 st4=w st5=h

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

    ;~ _("fld st0") ;st0=y*start st1=y*start st2=x st3=start st4=1 st5=w st6=h
    ;~ _("fptan") ;st0=1 st1=tan(y*start) st2=y*start st3=x st4=start st5=1 st6=w st7=h
    ;~ _("fstp st0") ;st0 weg
    ;~ _("fmul st0,st2") ;st0=x*tan(y*start) st1=y*start st2=x st3=start st4=1 st5=w st6=h
    ;~ ;RR speichern im pixel
    ;~ _("fistp dword[edi+2]") ;st0=y*start st1=x st2=start st3=1 st4=w st5=h

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

    ;~ _("fstp st0") ;st0 weg
    ;~ ;st0=x st1=start st2=1 st3=w st4=h
    ;~ _("fsub st0,st2") ;x=x-1

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

    ;~ _("add edi,4") ;ein pixel weiter
    ;~ _("dec ecx") ;Zähler dekrementieren
    ;~ _("jnz for_x") ;Wenn Zähler <> 0 dann wiederhole Schleife

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

    ;~ _("fstp st0") ;st0=start st1=1 st2=w st3=h
    ;~ _("fxch st3")
    ;~ _("fsub st0,st1")
    ;~ _("fxch st3")
    ;~ _("dec edx") ;Zähler dekrementieren
    ;~ _("jnz for_y") ;Wenn Zähler <> 0 dann wiederhole Schleife

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

    ;~ _("finit") ; copro-stack cleanen
    ;~ _("ret") ;Ende
    ;~ EndFunc ;==>F

    [/autoit]


    aber trotzdem noch bissl schneller als AutoIt^^

    Kann mal einer der c++-Spezialisten die folgenden Zeilen verifizieren, mich würde interessieren, was ein c oder c++-Compiler aus dem Code macht!

    Spoiler anzeigen
    [autoit]

    For $y=0 To $h
    For $x=0 To $w
    $r=$x*Sin($y*$start)
    $g=$x*Cos($y*$start)
    $b=$x*Tan($y*$start)
    $color="0xFF"&Hex($r,2)&Hex($g,2)&Hex($b,2)
    _GDIPlus_BitmapSetPixel($bmp,$x,$y,$color)
    Next
    Next

    [/autoit]


    ....ansonsten bleibt einem wie im Tunnelflug (s. Assemblertut) nichts weiter übrig, als 3 Lookup-Tables a 1000 floats zu schreiben mit den Sin(), Cos(), und Tan()-Werten von 0 bis 2pi. Damit lässt sich bestimmt massig Zeit (auch in c++ rausholen)!

  • Befindet sich Punkt in Polygon?

    • Andy
    • 7. Februar 2011 um 18:46

    Hi,

    Zitat von AspirinJunkie

    Für ein Konvexes Polynom:

    ................................

    Für ein nicht-konvexes Polyonom:


    wusst ichs doch, dass der das wieder auseinanderklabustert :thumbup: , aber genau so gehört sich das *verbeug*

    stayawayknight, sag mal kurz etwas zu deinem konkreten Problem!
    Wenn du die Fläche füllen möchtest, die innerhalb eines Polygons liegt und dabei jeden Punktl auf "drin/draussen" prüfst, dauern die o.g. Abfragen ewig....
    Auch bei "grossen" Polygonen, z.B. die Wände eines Labyrints in einem Spiel, ist die obige Methode suboptimal...

  • Befindet sich Punkt in Polygon?

    • Andy
    • 7. Februar 2011 um 15:24

    Hi,
    damit hatte ich mich auch schon HIERrumgequält. Und da ging es nur um "billige" Vierecke...
    Es gibt zwar Funktionen für Rechtecke, aber die sind aufwendig!

    Schlussendlich habe ich das Problem einfach umgangen 8o. Ich habe es dann in etwa so gelöst:
    Sei n=Anzahl der Eckpunkte
    Geradengleichung aufstellen für alle Kanten zwischen P(0) und P(n). (Punkte rechtsrum bezeichnen) P(n+1)=P0
    PX ist der zu untersuchende Punkt

    Code
    setPX="INNERHALB"
    for i=0 to n+1
    wenn  PX sich LINKS von Gerade P(i)P(i+1) befindet, dann setPX="AUSSERHALB":exitloop
    next
  • Label Größe dynamisch anpassen

    • Andy
    • 7. Februar 2011 um 14:38

    oder meinst du

    [autoit]

    Global $title = GUICtrlCreateLabel("Label soll sich dyn. anpassen", 228, 14, 559, 75)
    GUICtrlSetResizing(-1, $GUI_DOCKAUTO);ggf andere "Docking Values"

    [/autoit]
  • Kleinster HD-Kurzfilm

    • Andy
    • 7. Februar 2011 um 07:46
    Zitat

    Edit: Wie findet man eigentlich solche Formeln? Bin grade auf der Suche danach, Interessiert mich nähmlich sehr

    einfach rumexperimentieren, oder von irgendwem schon fertige "Formeln" übernehmen und damit weiterexperimentieren...
    Das läuft dann meist unter Fraktale. Als Startwert kann man dann z.B. die aktuelle Aussteuerung von gleichzeitig abgespielter Musik nehmen, das gibt dann feine Effekte.
    Jetzt noch den "inner Loop" als c++ oder asm-funktion realisiert, und man bekommt auch schnelle Bilder!

    Btw., wie wäre es, wenn die c++-Spezialisten mal ein Grundgerüst dieses "inner loops" (in einer dll) schreiben würden! So dass man nur noch die 3-4 Zeilen Berechnungen einfügen muss. Das wäre dann bestimmt einfacher zu realisieren und würde mit Sicherheit auch mehr Leute ansprechen wie eine ASM-Funktion :D. Da ja Visual C++ Express kostenlos und weit verbreitet ist, würde es sich anbieten.
    So könnte man in AutoIt mit den Formeln experimentieren und nachher die fertigen Funktion(en) einfach in C übertragen und den "inner loop" aus der dll aufrufen. Das sollten auch Nicht-C++ler (so wie ich ^^) hinbekommen.

  • Schnitzel hat Geburtstag!

    • Andy
    • 7. Februar 2011 um 06:59

    Glücklichen Herzwunsch und alles Gute!

  • Kleinster HD-Kurzfilm

    • Andy
    • 6. Februar 2011 um 17:44
    Zitat

    Wenn man jetzt noch eine Funktion schreiben würde, die unsere Bilder in Zukunft in eine Func _Bild() umwandeln würde, dann hätten wir kein Problem mehr mit der größe unserer Programme

    Dem Manne kann geholfen werden!
    http://de.wikipedia.org/wiki/Diskrete_Kosinustransformation
    http://de.wikipedia.org/wiki/Schnelle_Fourier-Transformation
    spart nicht viel, aber doch einiges.

    Zitat

    Daran sollten sich mal die großen Firmen ein Beispiel nehmen. Weil mich regt es schon auf, wenn die "modernen" Spiele 10-15 GB fressen oder sogar noch mehr. Wenn man es mal überlegt müsste das auch in 3-4MB passen.

    Solange der Krempel gekauft wird, haben die Hersteller überhaupt keine Veranlassung, irgendetwas zu ändern. Da steht dann auf der Spiele-Packung "erfordert mindestens 8GB RAM" und die Kiddies kaufen....sowohl Spiel als auch RAM! Im Zweifelsfall wird zum Spiel für 50€ auch gleich der passende Rechner für 1500€ gekauft....

  • Kleinster HD-Kurzfilm

    • Andy
    • 6. Februar 2011 um 12:39

    @campweb, man merkt wieder deutlich, dass Leute mitreden, die auch nicht ansatzweise Ahnung haben um was es geht :thumbdown:
    IM 12. Post hier im Thread habe ich die Seite von Iñigo Quílez verlinkt, der in der Demo-Szene u.a. mit seinem Team rgba eingeschlagen ist. Bei Pixar war er bis vor kurzem noch technischer Direktor Animationen.

    Um z. B. diesen Schmetterling
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    zu "erzeugen", könnte man haufenweise Pixel "malen", komprimieren und würde dadurch haufenweise Speicherplatz verschwenden und es wärre schnarchlangsam!

    Überführt man aber diesen Schmetterling in eine mathematische Funktion,
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    dann kann man damit Shader programmieren und somit den Schmetterling in jeder beliebigen Auflösung und natürlich auch animiert darstellen.
    Die Handvoll Formeln stellen wirklich den Schmetterling dar!

    Ich hab mal in ein AutoItscript gepackt, wie man z.B Kleeblätter "konstruieren" kann...

    Spoiler anzeigen
    [autoit]

    ;kleeblatt
    $user32 = DllOpen("user32.dll")
    $gdi32 = DllOpen("gdi32.dll")
    $w = 400
    $h = 400

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

    Global $pi = 4*atan(1)

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

    $hgui = GUICreate("Kleeblatt")
    $hdc_gui = getdc($hgui)
    GUISetState()

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

    for $x=1 to $w
    for $y=1 to $h
    $r=sqrt((($w/2)-$x)^2+(($h/2)-$y)^2)/150
    $p=atan2(($w/2)-$x,($h/2)-$y)
    $l=$r/(((1+cos(4*$p))^0.125)-(1/40*(1+cos(8*$p))^2))
    $col=int(1/4*(1-$l)^0.125*(1+$l^16)*(1+3*$r)*256)*256
    pix($hdc_gui,$x,$y,$col)
    Next
    Next

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

    while GUIGetMsg()<>-3
    wend

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

    func atan2($y,$x)
    return (2*atan($y/($x+sqrt($x*$x+$y*$y))))
    endfunc

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

    Func pix($dc, $x, $y, $color) ;pixel mit farbe an koordinaten setzen
    DllCall($gdi32, "long", "SetPixel", "long", $dc, "long", $x, "long", $y, "long", $color)
    EndFunc ;==>pix

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

    Func GetDC($handle)
    $dc = DllCall($user32, "int", "GetDC", "hwnd", $handle)
    Return $dc[0]
    EndFunc ;==>GetDC

    [/autoit]

    Dateien

    butterfly.jpg 16,55 kB – 0 Downloads maths.png 39,21 kB – 0 Downloads
  • Kleinster HD-Kurzfilm

    • Andy
    • 5. Februar 2011 um 12:55

    Für die Insider 8o :
    http://www.youtube.com/watch?v=zdbJhbGQfW0#t=0m44s

  • DeskStream 2 Release Candidate 1.8

    • Andy
    • 5. Februar 2011 um 12:48
    Zitat

    Ist es nicht so, dass ich auf beiden per TCP/IP die IP-Adresse des anderen angeben muss?

    nein, der Server braucht keine Adresse, der weiss, wo er wohnt^^.
    Der sitzt nur irgendwo rum und wartet, dass irgendein PAKETkurier der Firma TCP (nicht UPS^^) an sein PORTal anklopft und sein Paket(Daten) abliefern will.
    Da freut sich der Server, und gibt seine eigenen Daten dem Paketfuzzi wieder mit, der sie zum Client zurückträgt.
    Der Client muss natürlich wissen, wo der Server wohnt und braucht somit dessen ADRESSE!

    Weil aber haufenweise Paketkuriere herumschwirren, die dem Server irgendwelche unwichtigen Werbemitteilungen erzählen wollen, und der Server da absolut keinen Bock drauf hat, gibts VOR dem Server einen Rausschmeisser(Router), der nur die Kuriere durchlässt, die 1. die genaue Adresse des Servers wissen, und auch 2. die Hausnummer, die auf dem PORTal steht...
    Der Rausschmeisser ist gewissermassen der Weiterleiter oder Filter der Nachrichten (Portforwarding im Router)

  • Kleinster HD-Kurzfilm

    • Andy
    • 5. Februar 2011 um 12:25

    ....und wer wissen möchte, welchen mathematischen Background man beherrschen sollte, um derart schnelle und kleine Programme zu schreiben:
    http://www.iquilezles.org/ Bereich Strawberry ,
    z.B. http://www.iquilezles.org/www/articles/m…e/morenoise.htm
    Das habe ich in AutoIt nachprogrammieren wollen, aber bin an der Ausführungsgeschwindigkeit komplett gescheitert. Die Demo-Coder programmieren die Shader im Grafikprozessor, und die sind schon ca Faktor 100-1000x schneller bei diesen Berechnungen als eine CPU. Dazu noch der AutoIt-Interpreter, und man kommt locker auf einen Faktor 100.000, d.h. ein hunderttausend Mal langsameres AutoItscript^^
    Bei 25 FPS der Demo würde das AutoItscript für EINEN Frame 4000 (viertausend) Sekunden brauchen....

  • Happy Birthday, Andy

    • Andy
    • 4. Februar 2011 um 23:26

    i2c, ENDGEIIIIIL! :thumbup:

  • hGraphics oder hBitmap von hDC - mit _WinAPI_DrawIconEx direkt auf Gdi+ Kontext

    • Andy
    • 4. Februar 2011 um 23:20

    Hi,
    in Steganographie....Verstecken statt Verschlüsseln
    habe ich icons extrahiert und in einen HDC geblittet

    Zitat

    weil es sonst sehr flackert,

    es flackert nur, wenn du keinen Backbuffer benutzt!

  • Kleinster HD-Kurzfilm

    • Andy
    • 4. Februar 2011 um 21:59

    Da kanns eigentlich nur eine Antwort drauf geben....my one and only favorite! Farbrausch as it´s best...
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    /edit/ mein virenscanner (avira) springt an aufgrund der kompression, wer das "orginal" runterladen möchte
    http://www.pouet.net/prod.php?which=30244

    Dateien

    fr-041_debris.exe 181,25 kB – 898 Downloads
  • Happy Birthday, Andy

    • Andy
    • 4. Februar 2011 um 21:56

    Vielen Dank für die Glückwünsche, freue mich wirklich sehr ...
    Da macht das Scripten gleich doppelt so viel Spass, klasse Leute hier.... :rock:

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™