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

  • GDI+ Bitmap "trapezoid" zeichnen / DrawImage_4Points

    • Andy
    • 24. November 2010 um 22:47

    Hab was für euch, bin zufrieden...

    [autoit]

    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iX, $iY, $hGraphics)
    $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap) ;bisher wie gehabt
    _GDIPlus_GraphicsDrawLine($hbackbuffer, 20,50, 50, 0, $hPen) ;in backbuffer zeichnen

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

    _func_blablub($hbitmap, para1,para2.....) ;ASM- prog schreibt/verändert backbuffer

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

    _GDIPlus_GraphicsDrawImage($hGraphics, $hbitmap, 0, 0) ;backbuffer in gui

    [/autoit]

    so braucht sich keiner zu verbiegen, und ggf. bestehende und zu ersetzende GDI+-Funktionen können einfach ausgetauscht werden.
    Und ich habe eine "saubere" Schnittstelle ins GDI :D

    jetzt fehlt nur noch der ASM-Code für eukalyptus´ Funktion.... :whistling:;(

  • GDI+ Bitmap "trapezoid" zeichnen / DrawImage_4Points

    • Andy
    • 24. November 2010 um 09:37

    OK,
    dann hole ich mir den Pointer und $hBmp_buffer über CreateNewBitmap32($ix,$iy,$Ptr_buffer,$hBmp_buffer), welches dann

    [autoit]

    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iX, $iY, $hGraphics)

    [/autoit]

    ersetzt, und ihr könnt euch per

    [autoit]

    $hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBmp_buffer)
    $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hImage)

    [/autoit]

    den $hBackbuffer holen? Ist das so ok?

    Danach könnte man z.B. eine Funktion _Rect_to_Trapezoid($aEckpunkteRect[],$aEckpunkte_Trapezoid,$ix,$iy,$ptr_buffer) aufrufen, welche direkt in den Backbuffer schreibt.

    Btw, in CreateNewBitmap32() werden nur AutoIt-Funktionen verwendet.

    Nächste Frage:
    Durch bestimmte Prozessorbefehle (MMX/SSE), die ab den P3/P4 implementiert wurden, kann die Grafikberechnung wesentlich beschleunigt werden. Kann ich vorraussetzen, dass nur Prozessoren neuer als P3 (also ab P4) eingesetzt werden? Immerhin hat diese schon 10 Jahre alte Technik in den neuesten Linuxkernel Einzug gehalten. Auch die "großen" Bildbe(ver)arbeitungs-Softwarepakete setzen in den neuesten Versionen nun endlich diese uralten Prozessor-Befehle ein. Heureka, die Software tappert 10 Jahre hinter der Hardware her...

  • GDI+ Bitmap "trapezoid" zeichnen / DrawImage_4Points

    • Andy
    • 23. November 2010 um 21:24

    Kurze Umfrage an die GDI+-Freaks unter euch.
    Wie bzw in welcher Form (mit welchem GDI+-Befehl) würdet ihr am liebsten (ggf gibts Gründe) eine per Assembler bearbeitete Grafik in ein Fenster bringen.

    Folgender Hintergrund: Ich bearbeite die einzelnen Pixel in einer bis dato "leeren" Bitmap. Als Fan des blittens bringe ich die Grafik(en) so relativ einfach in ein Fenster, auch mit Transparenz.
    Da ihr aber auch mit Alphablending und anderen GDI+-Goodies arbeitet, wäre es sinnvoll, direkt die schon in GDI+ vorliegenden Bitmaps zu verwenden. Mir ist es egal, an welche Speicheradresse ich die "Pixel" schreibe, leider hält sich die GDI mit der Herausgabe von bestehenden (Bitmap)StartAdressen sehr dezent zurück....und genau diese Adressen brauche ich in Assembler.

    Zzt. erstelle ich eine "leere" Bitmap und erhalte den DC, den Pointer auf die "Pixel"(Bitmap) und ein Handle auf diese Bitmap.

    [autoit]

    $hdc_buffer=_CreateNewBmp32($width,$height,$ptr_buffer (byref), $hbmp_buffer (byref)) ;meine eierlegende Wollmilchsau
    ;per $ptr_buffer kann ich mit den "Pixeln" rumspielen nach belieben (in Assembler)
    $hGraphic = _GDIPlus_GraphicsCreateFromHDC($hdc_buffer) ;Graphics erstellen aus DC
    _GDIPlus_GraphicsDrawline($hGraphic, 1, 1,70,70,$hpen) ; malen in dieser per Assembler bearbeiteten "Bitmap"

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

    $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBMP_buffer) ;per Handle die hBitmap nach belieben verarbeiten
    _GDIPlus_ImageSaveToFile($hbitmap, "GDIPlus_Image.jpg")

    [/autoit]

    Weiter bin ich noch nicht gekommen, reicht das? Bzw. wie müsste ein "GDI+-kompatibler Bitmapbearbeitungsbefehl" aussehen?
    Bei einer schon bestehenden_GDIPlus_Graphics() könnte ich mir den DC holen, und dort die Veränderung reinblitten. Das geht, leider aber auf Kosten der Geschwindigkeit. Ist nicht die Welt, aber wieso mehrfach unnötig Speicher verschieben und verknüpfen, wenn man direkt im Ziel die Bitmap verändern könnte?
    Kann genausogut sein, dass dieser Weg von der GDI vorgesehen ist, dann mach ich das so......

  • Anfänger braucht Hilfe bei cmd Befehl vom Adobe Reader

    • Andy
    • 23. November 2010 um 15:36

    Gib den Pfad zur exe mit an, dann funktioniert es, alternativ PATH setzen bzw in der Registry eintragen.
    Ansonsten sucht der Kommandointerpreter (command.com) nur im aktuellen Verzeichnis und findet dort natürlich den Reader nicht

  • Anfänger braucht Hilfe bei cmd Befehl vom Adobe Reader

    • Andy
    • 23. November 2010 um 15:30

    der /T - Parameter steht imho für Terminate. Die Exe sollte danach also geschlossen werden.
    mom, du benutzt START!
    ruf das mal ohne den START auf, also nur AcroRd32.exe.....

  • Controlsend über Inputbox

    • Andy
    • 23. November 2010 um 15:08

    dann doch besser

    [autoit]

    WinList()

    [/autoit]
  • Anfänger braucht Hilfe bei cmd Befehl vom Adobe Reader

    • Andy
    • 23. November 2010 um 14:58

    Nach zig Beiträgen "...Script funktioniert nicht" mal dumm gefragt, ob du, wenn du per Hand (auf CMD-Ebene) Dateien kopierst und per
    Reader.exe /t blablub
    druckst, eine und wenn ja, welche Fehlermeldung erhälst.

    Bei mir zuhause funktioniert ein Script mit u.a. genau der Aufgabenstellung nämlich einwandfrei.
    Schreib eine Batch die funktioniert, und übertrage dann diese Befehle 1:1 ins Script

  • Anfänger braucht Hilfe bei cmd Befehl vom Adobe Reader

    • Andy
    • 23. November 2010 um 14:18

    [ offen ] pdf silent print

    Setz mal alle Dateinamen in Anführungsstriche, um die Leerzeichen im Dateinamen in der CMD abzufangen.

  • Was ist die beste Programmiersprache

    • Andy
    • 22. November 2010 um 23:38

    Hi,
    zunächst mal lernt man eine Programmiersprache nicht aus Büchern oder indem man sie sich aus Langeweile "in den hohlen Kopp kloppt"!
    Zum Programmieren gehören Anfangs zwei Dinge, Interesse an der Sache und am allerwichtigsten: EIN PROBLEM!
    Dieses "Problem" möglichst schnell und mit einfachen Befehlen zu lösen, da drängt sich eine Interpretersprache am Anfang geradezu auf. Denn die gloreiche Frage überhaupt hat hier noch garkeiner gestellt: Wieso willst du überhaupt programmieren können?

    Also ich habe anno Tobak mit einem BASIC-programmierbaren Taschenrechner angefangen, um im Matheunterricht die blöden Nullstellen nicht immer von Hand herausfinden zu müssen. In Französisch (die Sprache :rofl: ) konnte man damit auch einen Vokabeltrainer programmieren, was mich immerhin zu einer glatten 4 gerettet hat :thumbup:
    Physik (schiefer Wurf, elastischer Stoss) kam dazu, Chemie natürlich auch. In so gut wie keinem Schulfach hab ich das Ding nicht gebrauchen können. Integrieren, differenzieren, alles kein Thema mit URALT-BASIC. Und E-Technik (techn. Gymnasium) wäre für mich jedenfalls ohne dieses Gerät wesentlich schwerer geworden.
    Den kleinen Rechner konnte man sogar in Maschinesprache programmieren, und eine Schnittstelle nach draussen hatte der auch, während der Lehre zum Maschinenbauer hab ich ihn an eine Universal-Fräsmaschine von 1965 angeschlossen und konnte die Fräse damit steuern :rolleyes: Die (serien)-Lehrlingsfräserei von Aluteilen bestand für mich nur noch im Umspannen der Werkstücke und Knöpfchen auf dem Rechner drücken....A Propos, die Programme konnten mit einem handelsüblichen Kassettenrecorder auf Kasseten gespeichert werden.....fiiiiieeeeeeeeeppppppppp

    Im Maschinenbaustudium war alles easy, dank täglicher Nutzung meines kleinen Freundes. Später (bis heute) bei der täglichen Arbeit immer unverzichtbar....

    Warum schreibe ich so einen Roman? Weil ohne PROBLEM kein Grund zum Programmieren da ist!
    Allein die Fragestellung im Startpost zeigt mir deutlich, dass du dir darüber garkeine Gedanken gemacht hast! Ich hab in meinem ganzen Leben noch nie eine Zeile C geschrieben, wozu auch? Sämtliche "Probleme" die ich hatte, konnte ich wunderbar auf allen Rechnern in Basic lösen. Oder mittlerweile in AutoIt :love:
    Ein Bekannter ist Java-Spezialist (professionell), wenn ich dem eins von Assembler erzähle, läuft der regelmässig grün an^^. Für den ist halt wichtig, auf jeder ernstzunehmenden Maschine auf der Welt arbeiten können zu müssen....und er ist total stolz auf seinen Kühlschrank, denn der läuft mit Java.
    Einer meiner Kunden ist ein Fortran-Guru. Der kauft sich mittlerweile jedes Jahr eine schöne große Eigentumswohnung (soviel zum Gehalt eines "Programmierers"). Seine ersten "Probleme" hat er vor fast 30 Jahren auf einem Großbankenrechner gelöst. TicTacToe, weil er damit die Sekretärin seines Chefs in der Mittagspause beeindrucken konnte. Zum Abschluss seiner Lehre hat ihm sein Chef ein Jahr bei IBM in den USA geschenkt. Seitdem jettet er zwischen Asien,Europe und Amerika umher und löst mit Fortran "Probleme" in Großbanken!

    Sollst du jetzt Fortran lernen? Wenn dein "Problem" ein Bot für ein Online-Spiel ist, kann man mit Fortran nicht viel anfangen. Wenn du unbedingt eine Familienwebsite erstellen willst, lern HTML/Javascript/PHP.
    Ich hab mir sagen lassen, dass F# zzt. "Hip" ist. Welche Probleme man damit lösen kann ist mir schleierhaft, wahrscheinlich die, die man ohne F# garnicht hatte....

    Also nenn uns dein "Problem" und wir können dir einen Tip geben, mit welcher Programmiersprache man das am einfachsten/schnellsten/effektivsten/ lösen könnte.
    Alles andere ist verschwendete Zeit und bringt NICHTS! Programmieren lernt man nicht mal "eben so" im Informatikunterricht in der Schule... .

  • TCP Send an Root Server

    • Andy
    • 22. November 2010 um 14:22

    [ gelöst ] Clien sendet an Server nicht übers Inet

  • [GDI+] Verwischen / Unscharf machen

    • Andy
    • 21. November 2010 um 20:03

    GdipCreateEffect(const GUID guid, CGpEffect **effect), MSDN ist dein Freund^^
    GGf hat Yashied diese Funktion schon gewrappert oder sie ist in einer der GDI-UDF´s bereits enthalten

    "Verwischen" ist z.B. BLUR

  • 2D - DllStructs ?

    • Andy
    • 21. November 2010 um 19:36

    Hi,
    stell dir mal vor, wie ein Bild (Bitmap, Höhe und Breite ist somit 2D) im linearen Speicher liegt....
    Genau so werden auch Arrays erstellt, oder glaubst du, für ein $ARRAY[][][][][] wird ein 5-Dimensionaler Speicher bereitgehalten^^

    /EDIT/
    "Array" [100][20] ;100 Spalten und 20 Zeilen
    dllstructcreate ( "int [100*20]") ;platz im speicher schaffen

    $array[70][8]
    $pos=dllstructgetptr()+100 * 8 (das sind die Zeilen) + 70 (in der 9.zeile der 70. Wert)

  • GDI+ Bitmap "trapezoid" zeichnen / DrawImage_4Points

    • Andy
    • 21. November 2010 um 18:52

    AspirinJunkie
    hab deine Formeln mal umgestellt:

    xs = a1*x + a2*y + a3 - a7*x*xs - a8*y*xs
    wird zu
    xs = a1*x + a2*y + a3 + a4*0 + a5*0 + a6*0 - a7*x*xs - a8*y*xs
    äquivalent dazu ys (du hast einen Schreibfehler , es soll sicher heissen a4*x' in der 2. Gleichung)
    ys = a1*0 + a2*0 + a3*0 + a4*x + a5*y + a6 - a7*x*ys - a8*y*ys

    und damit die 8x8-Matrix aufgebaut, Gleichungen gelöst, in obige Formeln eingesetzt.....tadaaaa
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    /EDIT/ Assemblerscript dauert noch, Essen ist wichtiger 8o

    Dateien

    capture_21112010_185110.jpg 231,16 kB – 0 Downloads
  • DllCall -> Struct -> AutoIt

    • Andy
    • 21. November 2010 um 17:00

    Auf keinen Fall in die Tonne!
    Genau durch diese einfachen Beispiele lernt man am meisten ;)

  • GDI+ Bitmap "trapezoid" zeichnen / DrawImage_4Points

    • Andy
    • 21. November 2010 um 15:32

    Hallo Aspirin Junkie!
    Deine Gleichungen hatte ich auch schon gefunden, allerdings ist das bei mir mit der partiellen Differentation schon etwas her...
    In einem anderen Manuskript fand ich folgende Gleichungen, mit meinen eigenen Transformationsgleichungen bin ich auch nicht viel weiter gekommen

    xs = C1 * x + C2 * y + C3 * xy + C4
    ys = C5 * x + C6 * y + C7 * xy + C8

    wird also zu

    xs = C1 * x + C2 * y + C3 * xy + C4 * 1 + C5 * 0 + C6 * 0 + C7 * 0 + C8 * 0
    ys = C1 * 0 + C2 * 0 + C3 * 0 + C4 * 0 + C5 * x + C6 * y + C7 * xy + C8 * 1

    Den Löser für lineare Gleichungssysteme hab ich bereits geschrieben, bissl was geht also :rolleyes:
    Leider kommt bei obiger Formel sowas raus^^(einmal mit und einmal ohne "Viereckmaske")
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. ....ich bleib am Ball

    /EDIT/
    Ich habe sogar eine Zeichnerische Lösung herausgefunden, allerdings transformiert diese das( bzw alle) Pixel aus dem Orginalbild ins verzerrte Bild. Man kann allerdings nicht "rückwärts" von einem Pixel im verzerrten Bild auf das pixel im Orginal schliessen (da will ich ja hin)
    Die zeichnerische Lösung umgesetzt in ein Programm würde mit reichlich Winkelfunktionen arbeiten, ist allerdings perspektivisch korrekt und würde einige (viele) Pixel mehrfach berechnen.

    Dateien

    capture_21112010_152710.jpg 111,03 kB – 0 Downloads capture_21112010_152818.jpg 217,08 kB – 0 Downloads
  • Hausdurchsuchungen bei offensichtlich Unschuldigen

    • Andy
    • 21. November 2010 um 10:27
    Zitat

    gleich jemand vorbei und verlangt die Herausgabe deines Betriebssystems.

    uhhhh ;(
    Hauptsache Novell schaut nicht vorbei, bei denen hab ich mir nämlich einiges wg der Netzwerkkarte "ausgeliehen". *räusper* Aber da es sich um einen einmaligen Prototypen handelt, der aufgrund Speichermangels ("...64 KiloByte sind für jede Anwendung genug" :rock: ) teilweise selbstmodifizierenden Code benutzt, seh ich das gelassen 8o
    Am allergeilsten ist das GW-Basic im ROM! Addresse aufrufen, Tadaaaaa....über "Viren und Würmer" kann man da nur lachen. Ein Bufferoverflow führt nicht zu einem Sicherheitsproblem, sondern zu einem Kaltstart :rofl::rofl::rofl:

  • Hausdurchsuchungen bei offensichtlich Unschuldigen

    • Andy
    • 20. November 2010 um 19:12

    Oscar ,
    ja, ist mir auch sofort aufgefallen. Ich vermute sowieso, dass der Betroffene deshalb so "unauffällig" und zuvorkommend behandelt wurde, damit seitens Ermittlern möglichst wenig Staub aufgewirbelt wird. Dass der Bundestrojaner bei sämtlichen Antivirenprogramm-Herstellern auf der Whitelist stehen muss, ist ja wohl klar! Auch sämtliche Anbieter von Software (incl. alle in diesem Land verkauften Betriebssysteme) haben natürlich dafür zu sorgen, dass der BT ungehindert arbeiten kann. Ansonsten wird einfach seitens Staat der Verkauf dieses Produktes untersagt. Im öffentlichen Interesse natürlich....
    Und wer jetzt denkt, mit einem der Unix-Derivate ist man "sicher" vor dem BT, der scannt mal besser SÄMTLICHE Kernelquellcodes, bevor er sich sein System komplett kompiliert. Und sämtliche darauf installierte Software sowieso.
    Und die ROM´s der PC´s, Router, MP3-Player, Fernseher, Handys, DVD-Player usw natürlich auch! Ich verstehe nicht, wie man von "sicher" in Verbindung mit einem gekauften Gerät sprechen kann, dass eine Verbindung ins Internet aufbaut und dabei natürlich Daten überträgt.

    Man beachte weiterhin die "Hinweise" zu den als "sicher geltenden" Surf-Anonymisierern, z.B. JonDo. Selbstverständlich muss jeder Dienstleister im Rahmen der gesetzlichen Vorgaben Daten mitloggen, anssonsten wird der Laden dichtgemacht.
    Und wer jetzt meint, er sei auf der sicheren Seite, weil er einen ausländischen Proxy benutzt, der soll sich mal fragen, auf welchem Weg seine Datenpakete dorthinkommen und über welche Knoten diese geroutet werden. Wenn jemand jeden Tag ins Vereinsheim der Hells Angels geht, merkt auch der dümmste Überwacher irgendwann, dass man mit diesem Laden etwas zu tun hat. Man kann dann natürlich sagen, man sei die Putzfrau und habe nix damit zu tun, und die Kutte hätte man nur, weil die lustigen Embleme darauf so gut zum Kopftuch, Sonnenbrille und Vollbart passen ....

    Im Internet ist NICHTS sicher, nur das ist sicher!
    Daher habe ich auch nichts zu befürchten. Meine (unverschlüsselten) Terabytes an Daten kann jeder beliebig lange nach Informationen durchsuchen. Viel Spass dabei! Allerdings werden sich die Ermittler fragen, wozu ich einen funktionsfähigen 286 Rechner rumstehen habe. Von dem selbstgeschriebenen Einfachst-Betriebssystem auf einer 5 1/4´´ Diskette abgesehen. Aber diese in der Masse zu finden fällt natürlich schwer...besonders, da ich mir erst vor kurzem auf einem Flohmarkt für 10€ mehrere Kisten dieser Disketten (BASF, die guten^^) besorgt hatte....allein das Einlesen mit dem Diskettenlaufwerk dauert bestimmt Jahre. Arme Forensiker...

  • GDI+ Bitmap "trapezoid" zeichnen / DrawImage_4Points

    • Andy
    • 19. November 2010 um 17:54

    Oh, mfg....ich habs....ohne Winkelfunktionen, nur simple Verhältnsrechnung...heute Abend/Nacht in AutoIt, morgen bin ich unterwegs, aber spätestens am Sonntag in Assembler. 8o

  • Lieblings Spiel der 80. Jahre

    • Andy
    • 19. November 2010 um 13:57

    Für meine Frau war in den 80ern Tetris das Maß aller Dinge, das ist auch heute noch so! WENN sie etwas spielt, dann Tetris, oder seit neuestem Bubbles!

    Ich habe damals ab und zu mal Galaga (Spielhölle) gespielt, auf einem 8088-IBM PC dann angefangen mit Nethack (teilweise ASCII-Grafik) und den ersten "grafischen" Spielen.
    "Larry Laffer" fand ich cool :D
    Dann hab ich natürlich selbst angefangen, grafische "Spiele" zu schreiben, 4 Gewinnt, Mühle, Dame, (teilweise animiert). In Basic und auch in Assembler.
    Da ich keinen C64 und auch keine der Konsolen (Atari) hatte, kann ich über diese Spiel nicht mitreden :S

  • GDI+ Bitmap "trapezoid" zeichnen / DrawImage_4Points

    • Andy
    • 19. November 2010 um 11:28
    Zitat

    Verzerre diesen Path und fülle die entstandenen Trapeze mit der original Farbe

    hehe, genau das macht ja GdipWarpPath^^. Das soll ja ersetzt werden....
    Wenn ich das "zu Fuss" transferiere, komme ich ohne Winkelfunktionen nicht aus!
    Bei meiner im Bild dargestellten Transformation werden nur +-*/ verwendet, daher ist das sauschnell!

    Aber natürlich ist Ziel, perspektivisch korrekt darzustellen! Ggf reicht es, die Werte der Sinus/Cosinus in eine LUT zu schreiben, und diese zu benutzen. Siehe Assemblerbeispiel Tunnelflug, das ist dann vielleicht nicht bis auf die 8. Kommastelle genau, aber bei Bildern sollte man das verkraften können, bei bewegten Bildern erst recht!
    Naja, Wochenende naht, ich setz mich nachts mal dran, hat schon wer "zu Fuss" Transformationsfunktionen? Ich habe mir selbst welche aus den Fingern gesogen, bin daher betriebsblind, da ich immer die gleichen Vorraussetzungen ansetze!

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™