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. chrisatack

Beiträge von chrisatack

  • Sparkassen Saldo v1.0

    • chrisatack
    • 22. Juli 2010 um 12:21

    Servus...

    Ich muss dich leider enttäuschen... bei mit klappt es nicht...
    Ich versuch mal rauszufinden warum nicht...

    ich habe Win7... vieleicht daran?

    Ich bekomme den Error währen der anmeldung ...

    [autoit]

    --> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidDataType
    --> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidDataType

    [/autoit]

    Dann ne MsgBox mit dem Error das die Daten nicht gefunden wurden...

    MFG Chris :D

  • Infosys 2.0 "Informationssystem für Bargstedt und Holzma"

    • chrisatack
    • 22. Juli 2010 um 11:43

    Servus...

    Also erst mal möchte ich euch allen hier im Forum danken für die immer hilfreiche Unterstützung, die man eingeltich Tag und Nacht bekommt...
    Wie manche vieleicht gesehen haben arbeite ich als Holztechniker in einer Schreinerei. Manche glauben das der Schreiner immer noch alles mit der Hand macht.
    Aber dies hat sich spätestens seit den Zeiten von IKEA und Co. verändert. Um immer einen Qualitativen Vorsprung, bei gerechten Preisen, gegenüber den Massenproduzenten zu erreichen, werden auch bei uns in der Firma modernste Maschinen eingesetzt. Bei diesem Projekt hab ich mich dazu in dem Bereich Zuschnitt und den Maschinen von Holzma (Plattensäge) und Bargstedt (Plattenlager) der Homag Group etwas befasst :D

    Neueste Infos immer unter http://www.schiffer-soft.de
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    In diesem Tread gebe ich euch eine kleine Einsicht in das Projekt und der Doku, an dem ich ca. 1,5 Jahre nebenbei gearbeitet habe.
    Ich hoffe Ihr versteht das ich den gesamten Quelltext nicht veröffentlichen kann/werde, da Seitens einiger Firmen Interesse am System besteht.
    Bei Fragen zu bestimmten Teilen des Systems kann ich aber gerne Teile des Quelltextes/Lösung veröffentlichen.
    Der System umfasst zur Zeit ca. 3500 Zeilen (ohne Includes) und arbeitet mit den SQL-Servern der Maschinen und einer MySQL DB.

    [Blockierte Grafik: http://img14.imageshack.us/img14/7366/visitu.jpg]

    Beschreibung des Systems:

    Das Infosys 2.0 bereitet die Daten von Bargstedt-Plattenlagern und Holzma-Plattensägen übersichtlich auf und stellt sie in einer Intranet Seite zur Verfügung.
    Hierdurch wird die Übersichtlichkeit im Lager enorm verbessert.

    Vorwort aus der Doku:

    Zitat

    Die Idee zu diesem Projekt entstand im April 2009 als ich mich in die Schnittoptimierung der Firma K. einarbeitete. Hierbei fiel mir auf, dass das mitgelieferte Auslesetool der Firma B. umständlich gestaltet war. Daher entschied ich mich dazu Anfangs in der Version 1.x eine andere Möglichkeit der Verbreitung, später in der Version 2.0.x dann der Entnahme aus der Bargstedt MsSQL-DB, eine Software zu erstellen. Die Version 1.3 läuft in der Firma K. jetzt seit knapp 1 Jahr erfolgreich und hat sich in diesem Bereich schon oft als sehr hilfreich bewährt. Nebenberuflich fand ich Zeit eine neue Version des Informationssystems aufzusetzen und so begannen die Arbeiten an der Version 2.0.x im Januar 2010. Diese Version befindet sich ständig in der Weiterentwicklung und ist je nach Anforderung und Umgebung ausbaufähig.

    Inhaltsverzeichnis aus der Doku:

    Zitat

    1 Inhaltsverzeichnis 1
    2 Einleitung 3
    _2.1 Vorwort 3
    _2.2 Copyright 3
    _2.3 Entwicklungsumgebung 3
    _2.4 Entwicklungsstatus 3
    3 Kommunikationsdiagramm 4
    4 Der Infosys 2.0 Server 5
    _4.1 Informationen zum Server 5
    _4.2 Systemanforderungen 5
    __4.2.1 Systemanforderungen der Infosys Server Software 5
    __4.2.2 Anforderungen XAMPP Lite 5
    _4.3 Tray Menü des Servers 6
    __4.3.1 Info 6
    __4.3.2 Datenbankinfo 6
    __4.3.3 Diagnose 6
    __4.3.4 Bargstedt List refresh 6
    __4.3.5 PCT-Daten aktualisieren 6
    __4.3.6 Statistik neu aufbauen 6
    __4.3.7 PCT-Daten neu aufbauen 7
    __4.3.8 Einstellungen 7
    __4.3.9 Beenden 7
    5 Die Intranetseite 8
    _5.1 Kommunikationsmodell der Intranetseite 8
    _5.2 Bargstedt Seite 9
    __5.2.1 Übersicht 9
    __5.2.2 Produktionsliste 9
    __5.2.3 Lagerbestand 10
    __5.3 Holzma Seite 10
    __5.3.1 Übersicht 10
    __5.3.2 Statistik 11
    __5.3.3 Zeitverteilung ( Zusatzplugin ) 12
    _5.4 Einstellungen 13
    __5.4.1 Navigation 13
    __5.4.2 Globale Einstellungen 13
    __5.4.3 Update Einstellungen 14
    __5.4.4 Plattenminimum Kontrolle und Benachrichtigungen 14
    __5.4.5 Benachrichtigungen bei Plattenminimum oder Systemfehlern 15
    __5.4.6 Suche 16
    __5.4.7 Passwort ändern 16
    _5.5 Logseite 16
    6 Impressum 17

    Alles anzeigen


    Kommunikationsdiagramm aus der Doku:


    [Blockierte Grafik: http://img714.imageshack.us/img714/2118/visit3.jpg]


    Übersicht der Intranet Seite ( Informationsausgabe :(

    [Blockierte Grafik: http://img180.imageshack.us/img180/3708/visit2o.jpg]

    So... das war mal eine kleine Übersicht. Falls jemand natürlich nähere Infromationen oder Interesse an diesem System hat kann er mir gerne eine Mail an mail@schiffer-soft.de senden. Gerne sende ich dann auch die vollstädigen Doku über das System mit.

    Des weiteren suche ich noch weitere Entwicklungsumgebungen um die Stabilität und Anpassungsfähigkeit des Systems zu verbesser / erweitern.

    MFG chris :D

    Bilder

    • schiffer-soft2.png
      • 6,08 kB
      • 150 × 37
  • Sparkassen Saldo v1.0

    • chrisatack
    • 22. Juli 2010 um 10:18
    Zitat von Schrubber

    Klick hier ;)


    hehe du warst schneller ^^

    MFG chris :D

  • Sparkassen Saldo v1.0

    • chrisatack
    • 22. Juli 2010 um 10:16

    servus...

    Hört sich interessant an!!
    Aber Link geht nicht...

    EDIT : der Link hier geht .. http://www.maxreble.de/prgs/Sparkasse…nSaldo_v1.0.zip

    MFG chris :D

  • Funktion für die Verteilung von Rechtecken in einer Fläche

    • chrisatack
    • 5. Juli 2010 um 07:31

    hehe

    ja das hatte ich mir auch schon gedacht... :rolleyes:
    Aber vieleicht hat ja noch jemand ne Idee wie es noch viel schneller geht...
    und man könnte die UDF noch mit anderen Verteilungsarten füllen..
    Also falls jemand lust hat :D

    MFG chris :D

  • Funktion für die Verteilung von Rechtecken in einer Fläche

    • chrisatack
    • 4. Juli 2010 um 23:04

    Servus...

    Danke erst mal Andy... :thumbup:
    war in etwas das was ich haben wollte nur halt viel zu langsam... ?(
    Ich war aber auch an einer ähnlichen Version am arbeiten,die jetzt fertig ist und die ich mal gerade hier vorstellen möchte.

    Also es sieht mit der DEBUG Version jetzt so aus... 8o

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Ich habe daraus auch ne mini UDF gemacht... natürlich ohne GDI.
    Die rechnet dann 25 Rechtecke in ner 800 x 800 großen Zone in 1,7 sec.
    Beide Scripte sind im Anhang... :!:

    Vieleicht kanns ja noch jemand gebrauchen :party:

    MFG chris :D

    Dateien

    Unbenannt2.PNG 76,3 kB – 0 Downloads sharing2D.au3 8,45 kB – 399 Downloads sharing2D mit GDI liveAnsicht.au3 8,06 kB – 364 Downloads
  • Funktion für die Verteilung von Rechtecken in einer Fläche

    • chrisatack
    • 1. Juli 2010 um 10:34

    Servus...

    Soooo habs mal eingebaut...

    [Blockierte Grafik: http://img695.imageshack.us/img695/8337/image1hm.png]

    Spoiler anzeigen
    [autoit]


    #include <array.au3>
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $hArea = _sharing2D_SetArea(0,0,800,800)

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

    For $i = 1 To 35
    _sharing2D_Add_2DItem($hArea,Random(40,90,1),Random(110,180,1),10 )
    Next

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

    _sharing2D_DEBUG($hArea)

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

    Func _sharing2D_Add_2DItem( ByRef $_Sharing2D_Array,$_ItemWidth,$_ItemHeight,$_Safety_Zone = 10 )
    If UBound ( $_Sharing2D_Array ) < 2 Then
    _Array2DAdd($_Sharing2D_Array,Round(($_Sharing2D_Array[0][2]/2)-($_ItemWidth/2)-$_Safety_Zone,0)&'|'& _
    Round(($_Sharing2D_Array[0][3]/2)-($_ItemHeight/2)-$_Safety_Zone,0)&'|'& _
    Round($_ItemWidth+($_Safety_Zone*2),0)&'|'& _
    Round($_ItemHeight+($_Safety_Zone*2),0)&'|'& _
    Round($_Safety_Zone,0) )
    Else
    $_Random_X = Round(Random(0,$_Sharing2D_Array[0][2]-$_ItemWidth-$_Safety_Zone,1),0)
    $_Random_Y = Round(Random(0,$_Sharing2D_Array[0][3]-$_ItemHeight-$_Safety_Zone,1),0)

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

    $Collision = False
    For $i = 1 To UBound ( $_Sharing2D_Array ) -1

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

    ;======================================================
    ; RecCollisions Punkte...
    ;======================================================
    ; Gibt FALSE zurück wenn die Rechtecke sich berühren
    ;
    ; 1X1/1Y1 -------
    ; | |
    ; | |
    ; | |
    ; | 2X1/2Y1--|------
    ; | | | |
    ; | | | |
    ; --------1X2/1Y2 |
    ; | |
    ; | |
    ; | |
    ; ---------2X1/2Y2
    ;
    If _RectCollision( $_Sharing2D_Array[$i][0],$_Sharing2D_Array[$i][1], _ ;1X1/1Y1
    $_Sharing2D_Array[$i][0]+$_Sharing2D_Array[$i][2],$_Sharing2D_Array[$i][1]+$_Sharing2D_Array[$i][3], _ ;1X2/1Y2
    $_Random_X,$_Random_Y, _ ;2X1/2Y1
    $_Random_X+$_ItemWidth,$_Random_Y+$_ItemHeight ) Then
    $Collision = True
    EndIf
    Next
    If $Collision Then
    _sharing2D_Add_2DItem($_Sharing2D_Array,$_ItemWidth,$_ItemHeight,$_Safety_Zone )
    Else
    _Array2DAdd($_Sharing2D_Array, $_Random_X&'|'& _
    $_Random_Y&'|'& _
    Round($_ItemWidth,0)&'|'& _
    Round($_ItemHeight,0)&'|'& _
    Round($_Safety_Zone,0) )
    EndIf
    EndIf
    EndFunc

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

    Func _sharing2D_SetArea($Xin,$Yin,$Width,$Height)
    _GDIPlus_Startup()
    Global $_Sharing2D_Array[1][5]
    $_Sharing2D_Array[0][0] = $Xin
    $_Sharing2D_Array[0][1] = $Yin
    $_Sharing2D_Array[0][2] = $Width
    $_Sharing2D_Array[0][3] = $Height
    Return $_Sharing2D_Array
    EndFunc

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

    Func _sharing2D_DEBUG($_Sharing2D_Array)
    $_hDebugGui = GUICreate("DEBUGMODE", $_Sharing2D_Array[0][2],$_Sharing2D_Array[0][3] )
    GUISetState(@SW_SHOW,$_hDebugGui)

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

    $_hGraphic = _GDIPlus_GraphicsCreateFromHWND($_hDebugGui)
    $_hBMP = _GDIPlus_BitmapCreateFromGraphics ($_Sharing2D_Array[0][2],$_Sharing2D_Array[0][3], $_hGraphic )
    $_hBuffer = _GDIPlus_ImageGetGraphicsContext($_hBMP)

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

    ;Rahmen
    $_hPen_Border = _GDIPlus_PenCreate ( 0xFF00FF00,4 )
    _GDIPlus_GraphicsDrawRect($_hBuffer, $_Sharing2D_Array[0][0],$_Sharing2D_Array[0][1],$_Sharing2D_Array[0][2],$_Sharing2D_Array[0][3],$_hPen_Border )

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

    ; Mittelpunkt
    $_hPen_Middle = _GDIPlus_PenCreate ( 0xFFFF0000,1 )
    _GDIPlus_GraphicsDrawLine($_hBuffer, ($_Sharing2D_Array[0][2]/2)-5,$_Sharing2D_Array[0][3]/2,($_Sharing2D_Array[0][2]/2)+5,$_Sharing2D_Array[0][3]/2,$_hPen_Middle )
    _GDIPlus_GraphicsDrawLine($_hBuffer, ($_Sharing2D_Array[0][2]/2),($_Sharing2D_Array[0][3]/2)-5,($_Sharing2D_Array[0][2]/2),($_Sharing2D_Array[0][3]/2)+5,$_hPen_Middle )

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

    ; Rechtecke
    $_hPen_Rect = _GDIPlus_PenCreate ( 0xFF0000FF,1 )
    $_hBrush_Rect = _GDIPlus_BrushCreateSolid('0x'&Hex(40, 2)&'0000FF' )
    $_hPen_SaftyZone = _GDIPlus_PenCreate ( 0xFFFF8C00,1 )
    For $i = 1 To UBound ( $_Sharing2D_Array )-1
    _GDIPlus_GraphicsDrawRect($_hBuffer, $_Sharing2D_Array[$i][0], _
    $_Sharing2D_Array[$i][1], _
    $_Sharing2D_Array[$i][2], _
    $_Sharing2D_Array[$i][3], _
    $_hPen_SaftyZone )
    _GDIPlus_GraphicsFillRect($_hBuffer, $_Sharing2D_Array[$i][0]+$_Sharing2D_Array[$i][4], _
    $_Sharing2D_Array[$i][1]+$_Sharing2D_Array[$i][4], _
    $_Sharing2D_Array[$i][2]-($_Sharing2D_Array[$i][4]*2), _
    $_Sharing2D_Array[$i][3]-($_Sharing2D_Array[$i][4]*2), _
    $_hBrush_Rect )
    _GDIPlus_GraphicsDrawRect($_hBuffer, $_Sharing2D_Array[$i][0]+$_Sharing2D_Array[$i][4], _
    $_Sharing2D_Array[$i][1]+$_Sharing2D_Array[$i][4], _
    $_Sharing2D_Array[$i][2]-($_Sharing2D_Array[$i][4]*2), _
    $_Sharing2D_Array[$i][3]-($_Sharing2D_Array[$i][4]*2), _
    $_hPen_Rect )
    Next

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

    _GDIPlus_GraphicsDrawImageRect($_hGraphic, $_hBMP, 0, 0,$_Sharing2D_Array[0][2], $_Sharing2D_Array[0][3])
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd
    EndFunc

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

    Func _Array2DAdd(ByRef $avArray, $sValue='')
    If ( Not IsArray($avArray) ) Then
    SetError(1)
    Return 0
    EndIf
    Local $i
    Local $UBound2nd = UBound($avArray,2)
    If @error = 2 Then
    ReDim $avArray[UBound($avArray)+1]
    $avArray[UBound($avArray)-1] = $sValue
    Else
    Local $arValue
    ReDim $avArray[UBound($avArray)+1][$UBound2nd]
    If $sValue = '' Then
    For $i = 0 To $UBound2nd-2
    $sValue &= '|'
    Next
    EndIf
    $arValue = StringSplit($sValue, '|')
    If $arValue[0] <> $UBound2nd Then
    SetError(2)
    Return 0
    EndIf
    For $i = 0 To $UBound2nd-1
    $avArray[UBound($avArray)-1][$i] = $arValue[$i+1]
    Next
    EndIf
    Return -1
    EndFunc ;==>_Array2DAdd

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

    Func _RectCollision($Rect1X1,$Rect1Y1,$Rect1X2,$Rect1Y2, $Rect2X1, $Rect2Y1, $Rect2X2, $Rect2Y2)
    ; Prog@ndy
    Local Const $tagRECT = "long;long;long;long"
    Local $1 = DllStructCreate($tagRECT)
    Local $2 = DllStructCreate($tagRECT)
    Local $3 = DllStructCreate($tagRECT)
    DllStructSetData($1,1,$Rect1X1)
    DllStructSetData($1,2,$Rect1Y1)
    DllStructSetData($1,3,$Rect1X2)
    DllStructSetData($1,4,$Rect1Y2)
    DllStructSetData($2,1,$Rect2X1)
    DllStructSetData($2,2,$Rect2Y1)
    DllStructSetData($2,3,$Rect2X2)
    DllStructSetData($2,4,$Rect2Y2)
    Local $r = DllCall("User32.dll", "int", "IntersectRect", "ptr", DllStructGetPtr($3), "ptr", DllStructGetPtr($1), "ptr", DllStructGetPtr($2))
    If @error Then Return SetError(1,0,0)
    Return $r[0]<>0
    EndFunc

    [/autoit]

    Funktioniert auch gut... aber....ab 30 Rechtecken kann es einen Error geben...
    ==> Recursion level has been exceeded - AutoIt will quit to prevent stack overflow.:

    schön wäre halt jetzt noch das die Rechtecke zueinander in einem Umkreis um das mittlere angeordnet werden.. wie von Andy angesprochen...

    MFG chris :D

  • Funktion für die Verteilung von Rechtecken in einer Fläche

    • chrisatack
    • 1. Juli 2010 um 07:09

    Morgen ....

    Danke erst mal für die Version UEZ werd die dann in meiner Frühstückspause mal testen...

    Andy...
    Also am besten wäre es so... Das erste Rechteck wird im Mittelpunkt erstellt...
    die anderen sollen dann im möglichst kleinen Abstand Kreismäßig um das mittlere verteilt werden
    ohne das sich die orangenen Zonen überschreiten oder die Rechtecke gedreht oder verzogen werden.

    Wie geht man an sowas Mathematisch ran?


    MFG chris :D

  • Funktion für die Verteilung von Rechtecken in einer Fläche

    • chrisatack
    • 30. Juni 2010 um 21:20

    Servus...

    Also ich bin etwas weiter gekommen... allerdings habe ich ein Problem mit den Überschneidungen...
    Sieht man im folgendem Bild sehr gut.. :S

    [Blockierte Grafik: http://img641.imageshack.us/img641/6298/unbenanntur.png]

    Wie kann ich jetzt am besten überprüfen wenn ich ein neues Rechteck hinzufüge ob es schon ein Rechteck gibt,
    das an dieser Stelle ist, oder ich mit dem eingefügten vieleicht ein anderes berühre...
    max die orangenen dürfen sich berühren aber nicht überschneiden.... ?(

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $hArea = _sharing2D_SetArea(0,0,800,800)

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

    For $i = 0 To 20
    _sharing2D_Add_2DItem($hArea,Random(40,90,1),Random(110,200,1),10 )
    Next

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

    _sharing2D_DEBUG($hArea)

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

    Func _sharing2D_Add_2DItem( ByRef $_Sharing2D_Array,$_ItemWidth,$_ItemHeight,$_Safety_Zone = 10 )
    If UBound ( $_Sharing2D_Array ) < 2 Then
    _Array2DAdd($_Sharing2D_Array,Round(($_Sharing2D_Array[0][2]/2)-($_ItemWidth/2)-$_Safety_Zone,0)&'|'& _
    Round(($_Sharing2D_Array[0][3]/2)-($_ItemHeight/2)-$_Safety_Zone,0)&'|'& _
    Round($_ItemWidth+($_Safety_Zone*2),0)&'|'& _
    Round($_ItemHeight+($_Safety_Zone*2),0)&'|'& _
    Round($_Safety_Zone,0) )
    Else
    $_Random_X = Round(Random(0,$_Sharing2D_Array[0][2]-$_ItemWidth-$_Safety_Zone,1),0)
    $_Random_Y = Round(Random(0,$_Sharing2D_Array[0][3]-$_ItemHeight-$_Safety_Zone,1),0)
    _Array2DAdd($_Sharing2D_Array, $_Random_X&'|'& _
    $_Random_Y&'|'& _
    Round($_ItemWidth,0)&'|'& _
    Round($_ItemHeight,0)&'|'& _
    Round($_Safety_Zone,0) )
    EndIf
    EndFunc

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

    Func _sharing2D_SetArea($Xin,$Yin,$Width,$Height)
    _GDIPlus_Startup()
    Global $_Sharing2D_Array[1][5]
    $_Sharing2D_Array[0][0] = $Xin
    $_Sharing2D_Array[0][1] = $Yin
    $_Sharing2D_Array[0][2] = $Width
    $_Sharing2D_Array[0][3] = $Height
    Return $_Sharing2D_Array
    EndFunc

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

    Func _sharing2D_DEBUG($_Sharing2D_Array)
    $_hDebugGui = GUICreate("DEBUGMODE", $_Sharing2D_Array[0][2],$_Sharing2D_Array[0][3] )
    GUISetState(@SW_SHOW,$_hDebugGui)

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

    $_hGraphic = _GDIPlus_GraphicsCreateFromHWND($_hDebugGui)
    $_hBMP = _GDIPlus_BitmapCreateFromGraphics ($_Sharing2D_Array[0][2],$_Sharing2D_Array[0][3], $_hGraphic )
    $_hBuffer = _GDIPlus_ImageGetGraphicsContext($_hBMP)

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

    ;Rahmen
    $_hPen_Border = _GDIPlus_PenCreate ( 0xFF00FF00,4 )
    _GDIPlus_GraphicsDrawRect($_hBuffer, $_Sharing2D_Array[0][0],$_Sharing2D_Array[0][1],$_Sharing2D_Array[0][2],$_Sharing2D_Array[0][3],$_hPen_Border )

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

    ; Mittelpunkt
    $_hPen_Middle = _GDIPlus_PenCreate ( 0xFFFF0000,1 )
    _GDIPlus_GraphicsDrawLine($_hBuffer, ($_Sharing2D_Array[0][2]/2)-5,$_Sharing2D_Array[0][3]/2,($_Sharing2D_Array[0][2]/2)+5,$_Sharing2D_Array[0][3]/2,$_hPen_Middle )
    _GDIPlus_GraphicsDrawLine($_hBuffer, ($_Sharing2D_Array[0][2]/2),($_Sharing2D_Array[0][3]/2)-5,($_Sharing2D_Array[0][2]/2),($_Sharing2D_Array[0][3]/2)+5,$_hPen_Middle )

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

    ; Rechtecke
    $_hPen_Rect = _GDIPlus_PenCreate ( 0xFF0000FF,1 )
    $_hBrush_Rect = _GDIPlus_BrushCreateSolid('0x'&Hex(40, 2)&'0000FF' )
    $_hPen_SaftyZone = _GDIPlus_PenCreate ( 0xFFFF8C00,1 )
    For $i = 1 To UBound ( $_Sharing2D_Array )-1
    _GDIPlus_GraphicsDrawRect($_hBuffer, $_Sharing2D_Array[$i][0], _
    $_Sharing2D_Array[$i][1], _
    $_Sharing2D_Array[$i][2], _
    $_Sharing2D_Array[$i][3], _
    $_hPen_SaftyZone )
    _GDIPlus_GraphicsFillRect($_hBuffer, $_Sharing2D_Array[$i][0]+$_Sharing2D_Array[$i][4], _
    $_Sharing2D_Array[$i][1]+$_Sharing2D_Array[$i][4], _
    $_Sharing2D_Array[$i][2]-($_Sharing2D_Array[$i][4]*2), _
    $_Sharing2D_Array[$i][3]-($_Sharing2D_Array[$i][4]*2), _
    $_hBrush_Rect )
    _GDIPlus_GraphicsDrawRect($_hBuffer, $_Sharing2D_Array[$i][0]+$_Sharing2D_Array[$i][4], _
    $_Sharing2D_Array[$i][1]+$_Sharing2D_Array[$i][4], _
    $_Sharing2D_Array[$i][2]-($_Sharing2D_Array[$i][4]*2), _
    $_Sharing2D_Array[$i][3]-($_Sharing2D_Array[$i][4]*2), _
    $_hPen_Rect )
    Next

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

    _GDIPlus_GraphicsDrawImageRect($_hGraphic, $_hBMP, 0, 0,$_Sharing2D_Array[0][2], $_Sharing2D_Array[0][3])
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd
    EndFunc

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

    Func _Array2DAdd(ByRef $avArray, $sValue='')
    If ( Not IsArray($avArray) ) Then
    SetError(1)
    Return 0
    EndIf
    Local $i
    Local $UBound2nd = UBound($avArray,2)
    If @error = 2 Then
    ReDim $avArray[UBound($avArray)+1]
    $avArray[UBound($avArray)-1] = $sValue
    Else
    Local $arValue
    ReDim $avArray[UBound($avArray)+1][$UBound2nd]
    If $sValue = '' Then
    For $i = 0 To $UBound2nd-2
    $sValue &= '|'
    Next
    EndIf
    $arValue = StringSplit($sValue, '|')
    If $arValue[0] <> $UBound2nd Then
    SetError(2)
    Return 0
    EndIf
    For $i = 0 To $UBound2nd-1
    $avArray[UBound($avArray)-1][$i] = $arValue[$i+1]
    Next
    EndIf
    Return -1
    EndFunc ;==>_Array2DAdd

    [/autoit]

    Hab mich schon tot gesucht bei Wikipedia nach Formeln für sowas... :cursing:
    Vieleicht hat ja jemand ne Idee....

    MFG chris :D

  • Funktion für die Verteilung von Rechtecken in einer Fläche

    • chrisatack
    • 27. Juni 2010 um 12:23

    Servus...

    Ich bräuchte mal wieder nen Lösungsansatz... :cursing:
    Ich habe eine unendliche Fläche. Darauf möchte ich eine immer unterschiedliche Anzahl von Rechtecken ( auch immer unterschiedlich in Breite und Höhe ) verteilen.
    Ich hatte erst an einfache verteilugn in X bis eine bestimmte Breit und dann eine Art Zeile weiter in Y angedacht aber das gefällt mir nicht. Sie sollen sich halt frei verteilen...
    ich hab mal nen paar Bilder gemacht wie ich es mir vorstelle...

    Lösung in Post [ offen ] Funktion für die Verteilung von Rechtecken in einer Fläche

    [Blockierte Grafik: http://img256.imageshack.us/img256/894/16105851.png] 
    Jetzt sollen sie verteilt werden....am besten mit einem Kollisionsabstand, den man frei wählen kann....

    [Blockierte Grafik: http://img13.imageshack.us/img13/2747/37111750.png] 
    Sieht schon fast gut aus... nur etwas unschön irgendwie...

    [Blockierte Grafik: http://img651.imageshack.us/img651/3111/96771349.png] 
    Das wäre natürlich die Beste Lösung..
    Ich dachte mir einfach, dass man es vieleicht mit Brutforce machen muss.. d.h. min. und max. Abstand zum ersten... aber keine Überschneidung

    Danke schonmal....

    MFG chris :D

  • Wir bauen uns ein CAD

    • chrisatack
    • 24. Juni 2010 um 10:02

    Huhu...

    Sorry Ich wollte das ganze nicht in Frage stellen oder dich demotivieren... 8o
    Aber alleine die Berechnung des Hintergrundes und des Größenverhältnis solltest du dir genau überlegen. :!:
    Das ist alles überhaupt nicht einfach... obwohl es nur 2D ist...

    Ich brauche in meinem aktuellen Projekt auch eine 2D Rasterfläche mit Verhältnissen und XY Achse...
    Daher stell ich dir mal meine Lösung hier rein....vieleicht kannst du es ja gebrauchen...

    Spoiler anzeigen
    [autoit]


    #include <GDIP.au3>
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <array.au3>
    #include <misc.au3>

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

    ;=================================================================
    ; Opts / Startups
    ;=================================================================
    Opt("GUIOnEventMode", 1)
    Opt("MouseCoordMode",2)
    Opt("WinTitleMatchMode", 4)
    _GDIPlus_Startup()

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

    ;=================================================================
    ; Declarieren
    ;=================================================================
    ; Gui Verhältnisse
    Global Const $Gui_Width = 800 ; Breite des Guis
    Global Const $Gui_Height = 800

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

    ; Verhältnisse
    Global $relation = 1 ; Verhältnis von allem
    Global $Anp_relation = 20 ; Raster Verhältnis

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

    ; Hintergrund Raster
    Global $hPen_RasterLine1 = _GDIPlus_PenCreate(0xFF444444) ; Pen der Rasterlinien

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

    ; X u Y Achsen
    Global $hBrush_XAchse = _GDIPlus_BrushCreateSolid (0xFFCE1414) ; Brush für die X Achsenbeschriftung
    Global $hBrush_YAchse = _GDIPlus_BrushCreateSolid (0xFF2DF32D) ; Brush für die Y Achsenbeschriftung
    Global $hFormat_XYAchse = _GDIPlus_StringFormatCreate() ; Format für die Achsenbeschriftung
    Global $hFamily_XYAchse = _GDIPlus_FontFamilyCreate ("Arial") ; Schriftart für die Achsenbeschriftung
    Global $hFont_XYAchse = _GDIPlus_FontCreate ($hFamily_XYAchse, 8, 0); GDI Schrift erstellen für Achsenbeschriftung
    Global $hPen_XAchse = _GDIPlus_PenCreate(0xFFCE1414,1) ; Pen der X Achse
    Global $hPen_YAchse = _GDIPlus_PenCreate(0xFF2DF32D,1) ; Pen der Y Achse
    Global $Main_AchseY = 60 ; 0 Punkt der Y Achse im Gui
    Global $Main_AchseX = $Gui_Height - 60 ; 0 Punkt der X Achse im Gui

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

    ;==================================================================
    ; Toolbargui erstellen
    ;==================================================================
    ;~ $hGui_Toolbar = GUICreate($Programm_Name, $GuiTool_Width, $GuiTool_Height,0,0)
    ;~ GUISetOnEvent($GUI_EVENT_CLOSE, "_EXIT")
    ;~ $hToolbar = _GUICtrlToolbar_Create($hGui_Toolbar)
    ;~ $aSize = _GUICtrlToolbar_GetMaxSize($hToolbar)

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

    ;==================================================================
    ; Gui erstellen
    ;==================================================================
    $hGui_Raster = GUICreate('test', $Gui_Width, $Gui_Height,-1,-1,-1, _
    BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE));,$hGui_Toolbar)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_EXIT")
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui_Raster)
    $hBmpBuffer = _GDIPlus_BitmapCreateFromGraphics($Gui_Width, $Gui_Height, $hGraphics)
    $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBmpBuffer)
    _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)

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

    ;==================================================================
    ; Rintergrundraster Pfad erstellen
    ;==================================================================
    $hPath = _GDIPlus_PathCreate($FillModeWinding)
    For $i = 0 To 1000
    _GDIPlus_PathAddLine($hPath, $i, 0, $i, 1000)
    _GDIPlus_PathCloseFigure($hPath)
    _GDIPlus_PathAddLine($hPath, 0, $i, 1000, $i)
    _GDIPlus_PathCloseFigure($hPath)
    Next
    $aBounds = _GDIPlus_PathGetWorldBounds($hPath)
    ;~ _ArrayDisplay ( $aBounds )
    ;==================================================================

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

    GUIRegisterMsg($WM_MOUSEWHEEL, "_WM_MOUSEWHEEL")
    GUIRegisterMsg($WM_PAINT, "WM_PAINT")
    GUIRegisterMsg($WM_ERASEBKGND, "WM_ERASEBKGND")

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

    GUISetState(@SW_SHOW,$hGui_Raster)

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

    _CAD_ReDrawBuffer()
    _WinAPI_RedrawWindow($hGui_Raster, 0, 0, 5)

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

    _CAD_Draw_XY_Achs()
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBmpBuffer, 0, 0,$Gui_Width, $Gui_Height)

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

    ;==================================================================
    ; Main While
    ;==================================================================
    $timerinit_DoppelklickRad = 0
    While 1
    Sleep(5)

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

    ; Linksklick
    If WinActive ( $hGui_Raster ) And _IsPressed('01') Then

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

    EndIf

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

    ;Rechtsklick
    If WinActive ( $hGui_Raster ) And _IsPressed('02') Then

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

    EndIf

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

    ; Doppelklick aufs Rad
    If WinActive ( $hGui_Raster ) and _IsPressed ( '04' ) and TimerDiff( $timerinit_DoppelklickRad ) > 50 _
    and TimerDiff( $timerinit_DoppelklickRad ) < 300 Then
    $Main_AchseY = 60 ; Umstellen auf alles Anzeigen
    $Main_AchseX = $Gui_Height - 60 ; Umstellen auf alles Anzeigen
    $relation = 1
    _CAD_ReDrawBuffer()
    _CAD_Draw_XY_Achs()
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBmpBuffer, 0, 0,$Gui_Width, $Gui_Height)
    EndIf

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

    ; Verschieben mit Mausrad
    If WinActive ( $hGui_Raster ) And _IsPressed("04") Then
    GUISetCursor ( 0,0, $hGui_Raster)
    $timerinit_DoppelklickRad = TimerInit()
    $MousePos_Wheel_1nd = MouseGetPos()
    Do
    $MousePos_Wheel_2nd = MouseGetPos()
    If $MousePos_Wheel_2nd[0] <> $MousePos_Wheel_1nd[0] Or _
    $MousePos_Wheel_2nd[1] <> $MousePos_Wheel_1nd[1] Then
    $Main_AchseY+= ($MousePos_Wheel_2nd[0] - $MousePos_Wheel_1nd[0])
    $Main_AchseX+= ($MousePos_Wheel_2nd[1] - $MousePos_Wheel_1nd[1])
    If $Main_AchseX > 1600*($relation+0.8) Then
    ;ganz oben
    $Main_AchseX = 1600*($relation+0.8)
    EndIf
    If $Main_AchseX < -800*($relation+0.8) Then
    ;ganz unten
    $Main_AchseX = -800*($relation+0.8)
    EndIf
    If $Main_AchseY > 1600*($relation+0.8) Then
    ;ganz links
    $Main_AchseY = 1600*($relation+0.8)
    EndIf
    If $Main_AchseY < -800*($relation+0.8) Then
    ;ganz rechts
    $Main_AchseY = -800*($relation+0.8)
    EndIf
    _CAD_ReDrawBuffer()
    _CAD_Draw_XY_Achs()
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBmpBuffer, 0, 0,$Gui_Width, $Gui_Height)
    $MousePos_Wheel_1nd[0] = $MousePos_Wheel_2nd[0]
    $MousePos_Wheel_1nd[1] = $MousePos_Wheel_2nd[1]
    EndIf
    Until _IsPressed("04") = False
    GUISetCursor( 2,0,$hGui_Raster )
    EndIf
    WEnd

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

    ;==================================================================
    ; F U N K T I O N E N
    ;==================================================================

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

    Func _CAD_Draw_XY_Achs()
    _GDIPlus_GraphicsDrawLine ( $hBuffer, 0,$Main_AchseX,$Gui_Width,$Main_AchseX,$hPen_XAchse )
    _GDIPlus_GraphicsDrawLine ( $hBuffer, $Main_AchseY,0,$Main_AchseY,$Gui_Height,$hPen_YAchse )

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

    ; Beschriftungen der Achsen
    Local $Main_AchseX_draw
    Local $Main_AchseY_draw
    If $Main_AchseX+5 > $Gui_Height-28 Then
    $Main_AchseX_draw = $Gui_Height-28
    Else
    $Main_AchseX_draw = $Main_AchseX+5
    EndIf
    If $Main_AchseY < -1 Then
    $Main_AchseY_draw = 5
    Else
    $Main_AchseY_draw = $Main_AchseY+5
    EndIf

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

    $tLayout_XAchse = _GDIPlus_RectFCreate (5,$Main_AchseX_draw, 100, 15)
    _GDIPlus_GraphicsDrawStringEx ($hBuffer, 'X-Achse y: '&$Main_AchseX, $hFont_XYAchse, $tLayout_XAchse, $hFormat_XYAchse, $hBrush_XAchse)
    $tLayout_YAchse = _GDIPlus_RectFCreate ($Main_AchseY_draw,$Gui_Height-15, 100, 15)
    _GDIPlus_GraphicsDrawStringEx ($hBuffer, 'Y-Achse x: '&$Main_AchseY, $hFont_XYAchse, $tLayout_YAchse, $hFormat_XYAchse, $hBrush_YAchse)
    _GDIPlus_GraphicsDrawString ( $hBuffer,'Verhältnis: 1:'&StringReplace(Round($relation,2),'.',',')&@CRLF& _
    'X Achse y= '&Round($Main_AchseX,2)&@CRLF& _
    'Y Achse x= '&Round($Main_AchseY,2),$Gui_Width-115,$Gui_Height-50) ; Verhältnis anzeigen
    EndFunc

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

    Func _CAD_ReDrawBuffer()
    _GDIPlus_GraphicsClear($hBuffer, 0xFF666666)
    $hPathClone = _GDIPlus_PathClone($hPath)

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

    ; Aufbau der Punkte für den Pfad...
    ;
    ; X1,Y1 ------------- X2,Y2
    ; | - | - | - | - | - |
    ; | - | - | - | - | - |
    ; | - | - | - | - | - |
    ; | - | Gitter - | - |
    ; | - | - | - | - | - |
    ; | - | - | - | - | - |
    ; X3,Y3 ------------- X4,Y4

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

    Dim $aPoints[5][2] =[[4, 0], _ ;
    [$Main_AchseY-(($Gui_Width * $relation*$Anp_relation)/2) , $Main_AchseX-(($Gui_Height*$relation*$Anp_relation)/2)], _ ;X1,Y1
    [$Main_AchseY+(($Gui_Width * $relation*$Anp_relation)/2), $Main_AchseX-(($Gui_Height*$relation*$Anp_relation)/2)], _ ;X2,Y2
    [$Main_AchseY-(($Gui_Width * $relation*$Anp_relation)/2) , $Main_AchseX+(($Gui_Height*$relation*$Anp_relation)/2)], _ ;X3,Y3
    [$Main_AchseY+(($Gui_Width * $relation*$Anp_relation)/2), $Main_AchseX+(($Gui_Height*$relation*$Anp_relation)/2)]] ;X4,Y4
    ; 0 0 300 300
    _GDIPlus_PathWarp($hPathClone, 0, $aPoints, $aBounds[0], $aBounds[1], $aBounds[2], $aBounds[3])
    _GDIPlus_GraphicsDrawPath($hBuffer, $hPathClone, $hPen_RasterLine1)
    _GDIPlus_PathDispose($hPathClone)
    EndFunc ;==>_CAD_ReDrawBuffer

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

    Func WM_PAINT($hWnd, $uMsgm, $wParam, $lParam)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBmpBuffer, 0, 0)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_PAINT

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

    Func WM_ERASEBKGND($hWnd, $uMsgm, $wParam, $lParam)
    _GDIPlus_GraphicsDrawImage($hGraphics, $hBmpBuffer, 0, 0)
    Return True
    EndFunc ;==>WM_ERASEBKGND

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

    Func _WM_MOUSEWHEEL($hWnd, $Msg, $wParam, $lParam)
    If WinActive ( $hGui_Raster ) And Not _IsPressed(04) Then
    Local $bDown = 1
    If BitShift($wParam, 16) > 0 Then $bDown = 0
    Switch $bDown
    Case 1
    $relation *= 0.8
    $relation_Add = False
    Case Else
    $relation *= 1.2
    $relation_Add = True
    EndSwitch
    If $relation > 1 Then
    ;max vergrößert
    $relation = 1
    EndIf
    If $relation < 0.20 Then
    ;max verkleinert
    $relation = 0.20
    EndIf
    _CAD_ReDrawBuffer()
    _WinAPI_RedrawWindow($hWnd, 0, 0, 5)
    _CAD_Draw_XY_Achs()
    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBmpBuffer, 0, 0,$Gui_Width, $Gui_Height)
    Return $GUI_RUNDEFMSG
    EndIf
    EndFunc ;==>_WM_MOUSEWHEEL

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

    Func _Exit()
    _GDIPlus_PathDispose($hPath)
    _GDIPlus_PenDispose($hPen_RasterLine1)
    _GDIPlus_GraphicsDispose($hBuffer)
    _GDIPlus_BitmapDispose($hBmpBuffer)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

    PS: Achja du brauchst die GDIP.au3 hab sie dir mal angehangen...

    MFG chris :D

    Dateien

    GDIP.au3 842,26 kB – 1.318 Downloads
  • RibbonsBar (Office 2007 Bar) UDF

    • chrisatack
    • 23. Juni 2010 um 16:29

    servus...

    Leider ist es nicht ohne weiteres möglich diese zusammenhängenden Buttons wie in deinem Anhang in die Bar einzubauen.
    Die Positionsberechnung dieser Buttons und deren Breite ist ganz anders ( Zusammenhängend ) als bei den anderen..

    Wenn man das hinzufügen möchte muss man einiges umstricken in der Bar... und da habe ich leider gerade keine Zeit für...
    Es bleibt dir leider nur die Möglichkeit die normalen kleinen Buttons zu nutzen oder dir die Funktion _RibbonsBar_Create_SmallButton genauer anzugucken und anzupassen..

    MFG chris :D

  • Mit Hilfe von AutoIt einen Shutdown erzeugen

    • chrisatack
    • 19. Juni 2010 um 13:56

    Hiho

    Ich kenne nur die Möglichkeit den Autoitprozess als Service starten zu lassen...
    Habe das bei mir in der Firma auf den Service PCs so.... :thumbup:

    Leider brauchste aber auch nen Tool um den Service eintragen zu lassen... ist im Anhang..

    @ Cartan12 wenn kein User angemeldet ist geht das doch nit oder? Mit dem Service müsste das dann aber gehen...

    MFg chris :D

    Dateien

    RunAsSvc.7z 77,37 kB – 299 Downloads
  • RibbonsBar (Office 2007 Bar) UDF

    • chrisatack
    • 17. Juni 2010 um 18:47

    Servus...

    Danke erst mal ;)

    also 0.3 ist zu 80-90% fertig aber liegt zu Zeit leider total auf Eis, da ich in meiner Firma nen großes Projekt laufen habe...

    also zu freien Farben: Das ganze sind alles Bilder... gerade wegen den Farbverläufen...du kannst aber in der bar.dll dir eine neue Farbversion anlegen... ist aber etwas arbeit ;) die Farbversion musst du dann auch in der UDF anlegen.. Wenn du das machen willst kann ich dir meine Rohdaten geben dann siehst du wo welche bmps/icons hin kommen... Kannst dir dazu auch mal das Thema hier angucken.. [ gelöst ] IconFX Beispiele ( Icon2DLLs )
    Hier haste auch mal die Roh.bmp aus denen ich die dll erstellt habe. ( Edit: Habe gerade gesehen das Imageshark.us leider BMP in PNG wandelt... also wenn du das Original haben willst sag bescheid )

    Main MenüTab... mal gucken vieleicht ^^ aber wenn dann Glaube ich eher dass ich das dann in ner 2010 UDF mache ;)

    Höhenänderung geht wegen den Bildern nur schwer... müsstest alles anpassen ^^ aber ne gute Idee ;)

    Wie gesagt ... das ist die 3 Version der RibbonsBar, aber immer noch ne Baustelle ... mir gefällt das neue Design von 2010 sehr gut... und ich bin etwas weiter in sachen GDI...
    Also wenns ne neue 2010er Version gibt wird die mit der GDI gemacht... und hat den neuen Style...

    MFG chris :D

  • Download pausieren, neustarten, weiterladen

    • chrisatack
    • 13. Juni 2010 um 11:55

    huhu...

    Warum das Rad neu erfinden...

    JDownloader.... Link musste selber finden ;)
    Der kann eigentlich alles was man sich vorstellen kann...

    Und denk dran nichts Illegales :P

    MFG chris :D

  • Wir bauen uns ein CAD

    • chrisatack
    • 13. Juni 2010 um 11:41

    Moin...

    also... klar ne schöne Idee ist das natürlich schon... Auch wenn es heißt warum das Rad neu erfinden...
    aber manchmal will man halt auch mal selber Sachen neu erfinden ;)

    Ich arbeite Beruflich in einer Schreinerrei und benutze Täglich AutoCAD2009, Imos und manchmal Spirit.
    Daher bin ich einfach der Meinung das das einfach viel zu Heftig/Umfangreich ist was du da vor hast.
    Zumal es tausende CAD Versionen gibt.
    Ein weiterer Punkt ist sicherlich die schnelligkeit von Autoit.... für 2D vleicht noch ausreichend...
    Aber bei 3D denke ich nicht, dass es da mithalten kann.... :?:

    Ich hatte auch schonmal die Idee ein eigenes CAD zu schreiben. Hab es dann aber auch sein gelassen und habe mich mehr
    auf eine Konstruktionsengine ( Imos ähnlich ) für Möbelkorpen konzentriert, die auf AutoCAD aufsetzt...
    [ offen ] 3D-Konstrunktions-Engine für den Möbelbau mit Autoit möglich?

    Leider ist zur Zeit das Projekt etwas eingeschlafen.... :cursing:
    Wenn meine anderen 2 Projekte fertig sind werde Ich da aber weiter machen... :wacko:

    Für was wolltest du das CAD entwickeln? Also welchen Berufszweig?

    MFG chris :D

  • Vergrößer/Verkleinerbares GDI Raster Ähnlich AutoCAD

    • chrisatack
    • 8. Juni 2010 um 23:33

    Servus...

    Ich habe eine Frage :cursing: ... Ist es möglich folgen Quelltext schneller zu machen :?:
    Wenn ich das Raster gräßer haben möchte geht das easy...klar werden ja auch weniger Linien...
    Wirds aber kleiner wird das viel zu langsam...
    Ich sag mal 0.2 von der $relation ist ok kleiner muss es nicht sein.
    Aber es sollen noch viel mehr GDI Elemente rein kommen.

    Aber zum besseres Verständnis erst mal der Code.. 8o

    Am Mausrad drehen...dann wirds größer und kleiner... :thumbup:

    Spoiler anzeigen
    [autoit]

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

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

    Global $Gui_Width = 1024
    Global $Gui_Height = 768
    Global $hGraphic,$hBrush_Grid_BG,$hPen_Grid_Lines,$hBitmap,$hBackbuffer
    Global $WheelMoving
    Global $relation = 1 ; Verhältnis von der Darstellung
    Global $hMouseHook, $WheelMoving
    $struct = "DWORD vkCode;" _
    &"DWORD scanCode;" _
    &"long flags;" _
    &"ULONG_PTR dwExtraInfo"
    $CallbackMouseProc = TogglePlugMouse()

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

    #Region ### START Koda GUI section ### Form=
    $hGui = GUICreate ( "AutoIttest",$Gui_Width,$Gui_Height)
    GUISetBkColor ( 0x666666 )
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ##

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

    _AutoItTest_Startup($hGui)
    _AutoItTest_Create_Grid(1)
    OnAutoItExitRegister ('_exit')

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

    ; Main WHILE ...
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    ;==========================================
    ; Mausrad bewegung prüfen...
    $WheelMsg = _GetWheelMove()
    ToolTip ( 'Faktor = '&$relation )
    Select
    Case $WheelMsg = "U" ;UP
    $relation = Round($relation*1.1,2)
    _AutoItTest_Create_Grid($relation)
    If $relation > 6.2 Then
    $relation = 6.2
    EndIf
    Case $WheelMsg = "D" ;UP
    $relation = Round($relation*0.9,2)
    If $relation < 0.6 Then
    $relation = 0.6
    EndIf
    _AutoItTest_Create_Grid($relation)
    EndSelect
    ;==========================================
    WEnd

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

    Func _exit()
    _GDIPlus_BrushDispose($hBrush_Grid_BG)
    _GDIPlus_PenDispose ( $hPen_Grid_Lines )
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown ()
    EndFunc

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

    Func _AutoItTest_Startup($hWnd)
    If Not IsHWnd($hWnd) Then
    SetError(1)
    Return 0
    EndIf
    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGui)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($Gui_Width , $Gui_Height, $hGraphic)
    $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    ;~ _GDIPlus_GraphicsSetSmoothingMode($hBackbuffer, 0) ;Antialiasing

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

    ;~ _GDIPlus_GraphicsClear($hBackbuffer) ;clear buffer
    $hBrush_Grid_BG = _GDIPlus_BrushCreateSolid(0xFF666666)
    $hPen_Grid_Lines = _GDIPlus_PenCreate(0xFF444444)
    Return 1
    EndFunc

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

    Func _AutoItTest_Create_Grid($rowSize)
    $rowSize *= 20
    _GDIPlus_GraphicsClear($hBackbuffer, 0xFF666666) ;clear buffer
    For $x = $rowSize/2 To $Gui_Width Step Round($rowSize*$relation,0)
    For $y = $rowSize/2 To $Gui_Height Step Round($rowSize*$relation,0)
    _GDIPlus_GraphicsDrawLine($hBackbuffer, 0 , $y , $Gui_Width ,$y ,$hPen_Grid_Lines)
    _GDIPlus_GraphicsDrawLine($hBackbuffer, $x , 0 , $x ,$Gui_Height ,$hPen_Grid_Lines)
    Next
    Next
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $Gui_Width, $Gui_Height)
    EndFunc

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

    ; ===============================================================================================================================
    ; Name...........: _isPressend Funktion fürs Mausrad
    ; Description ...: prüft ob das Mausrad gedreht/gedrückt wurde
    ; ===============================================================================================================================
    Func _GetWheelMove()
    Local $x = StringLeft($WheelMoving,1)
    $WheelMoving = StringTrimLeft($WheelMoving,1)
    Return $x
    EndFunc
    Func TogglePlugMouse($hCallProc=0)
    If IsArray($hMouseHook) Then
    DllCall("user32.dll", "int", "UnhookWindowsHookEx", "hwnd", $hMouseHook[0])
    DllCallbackFree($hCallProc)
    Return 0
    EndIf

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

    Local Const $WH_MOUSE_LL = 14
    ;~ Local Const $WH_MOUSE = 7
    Local $hMouseProc = DllCallbackRegister("_MouseProc", "int", "int;ptr;ptr")
    Local $hMod = DllCall("kernel32.dll", "hwnd", "GetModuleHandle", "ptr", 0)
    $hMouseHook = DllCall("user32.dll", "hwnd", "SetWindowsHookEx", _
    "int", $WH_MOUSE_LL, _
    "ptr", DllCallbackGetPtr($hMouseProc), _
    "hwnd", $hMod[0], _
    "dword", 0)
    Return $hMouseProc
    EndFunc

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

    Func _MouseProc($nCode, $wParam, $lParam)
    If $nCode < 0 Then
    Local $iRet = DllCall("user32.dll", "long", "CallNextHookEx", "hwnd", $hMouseHook[0], _
    "int", $nCode, _
    "ptr", $wParam, _
    "ptr", $lParam)
    Return $iRet[0]
    EndIf
    $dllstruct = DllStructCreate($struct,$lParam)
    If $wParam = 0x20A Then
    If DllStructGetData($dllstruct,3) > 0 Then
    $WheelMoving &= "U"
    ElseIf DllStructGetData($dllstruct,3) < 0 Then
    $WheelMoving &= "D"
    EndIf
    EndIf
    Return 0
    EndFunc

    [/autoit]

    Danke schonmal für die Hilfe

    MFG chris :D

  • Fliegende Schrift über Bild mit GDI

    • chrisatack
    • 6. Juni 2010 um 23:03

    Servus...

    Danke für die Hilfe...
    Ich habe mal die fertige Version hier rein gestellt..

    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    #include <WinAPI.au3>
    #include <GDIPlus.au3>
    #include <StaticConstants.au3>

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

    Global Const $GuiStart_width = 430
    Global Const $GuiStart_height = 236
    Global Const $GuiStart_Pos_X = -1
    Global Const $GuiStart_Pos_Y = -1
    Global Const $Schriftgroesse = 11
    Global Const $Schriftart = 1
    Global Const $Version_Programm = "v. 2.0.1.64"
    Global Const $Rechts_Unten = 'Lizenz: ----' & @CRLF & _
    'Beta Version'&@CRLF& _
    'C .Schiffer 2010'
    Dim $hGuiStart,$hFont_Label,$hFamily_Label,$hFormat_Label,$hBrush_Label,$hBackbuffer,$tLayout_Label2
    Dim $hImage,$hBrush_Label2,$hBackbuffer,$hGraphic,$hFormat_Label2,$hBitmap,$tLayout_Label

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

    _Intro()
    _WinFadeIn($hGuiStart)

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

    Sleep ( 300 )
    _StringFadeIn('Starte',50,190)
    ;--------------------------------------------------------------
    ; Hier kommt der zu verarbeitende Prozess rein...
    Sleep ( 200 )
    _StringSetNewText('Starte.',50,190)
    Sleep ( 200 )
    _StringSetNewText('Starte..',50,190)
    Sleep ( 200 )
    _StringSetNewText('Starte...',50,190)
    Sleep ( 200 )
    _StringSetNewText('Starte....',50,190)
    Sleep ( 200 )
    ;--------------------------------------------------------------
    _StringFadeOut('Starte....',50,190)

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

    _StringFadeIn('prüfe Daten',50,190)
    ;--------------------------------------------------------------
    ; Hier kommt der zu verarbeitende Prozess rein...
    Sleep ( 200 )
    _StringSetNewText('prüfe Daten.',50,190)
    Sleep ( 200 )
    _StringSetNewText('prüfe Daten..',50,190)
    Sleep ( 200 )
    _StringSetNewText('prüfe Daten...',50,190)
    Sleep ( 200 )
    _StringSetNewText('prüfe Daten....',50,190)
    Sleep ( 200 )
    ;--------------------------------------------------------------
    _StringFadeOut('prüfe Daten....',50,190)

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

    _StringFadeIn('starte Server',50,190)
    ;--------------------------------------------------------------
    ; Hier kommt der zu verarbeitende Prozess rein...
    Sleep ( 200 )
    _StringSetNewText('starte Server (15%)',50,190)
    Sleep ( 200 )
    _StringSetNewText('starte Server (30%)',50,190)
    Sleep ( 200 )
    _StringSetNewText('starte Server (60%)',50,190)
    Sleep ( 200 )
    _StringSetNewText('starte Server (85%)',50,190)
    Sleep ( 200 )
    ;--------------------------------------------------------------
    _StringFadeOut('starte Server (100%)',50,190)

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

    Sleep (200)
    _WinFadeOut($hGuiStart)
    _IntroExit()
    ;-------------------------------------------------------------------------------------------------
    ; GDI Beenden
    ;-------------------------------------------------------------------------------------------------
    Func _IntroExit()
    _GDIPlus_FontDispose($hFont_Label)
    _GDIPlus_FontFamilyDispose($hFamily_Label)
    _GDIPlus_StringFormatDispose($hFormat_Label)
    _GDIPlus_StringFormatDispose($hFormat_Label2)
    _GDIPlus_BrushDispose($hBrush_Label)
    _GDIPlus_BrushDispose($hBrush_Label2)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown ()
    EndFunc

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

    ;-------------------------------------------------------------------------------------------------
    ; Intor erstellen
    ;-------------------------------------------------------------------------------------------------
    Func _Intro()
    $hGuiStart = GUICreate('', $GuiStart_width, $GuiStart_height ,$GuiStart_Pos_X,$GuiStart_Pos_y,$WS_POPUP, BitOR($WS_EX_TOOLWINDOW,$WS_EX_TOPMOST))
    WinSetTrans($hGuiStart, "",0)
    GUISetState()
    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGuiStart)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($GuiStart_width, $GuiStart_height, $hGraphic)
    $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    $hImage = _SetImagefromResource(0, "hg", "data.dll",2)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)

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

    $hBrush_Label = _GDIPlus_BrushCreateSolid (0xFFB0C4DE);blau
    $hBrush_Label2 = _GDIPlus_BrushCreateSolid (0xFF000000);schwarz
    $hFormat_Label = _GDIPlus_StringFormatCreate ()
    $hFormat_Label2 = _GDIPlus_StringFormatCreate ()
    _GDIPlus_StringFormatSetAlign($hFormat_Label2, 2)
    $hFamily_Label = _GDIPlus_FontFamilyCreate ("Arial")
    $hFont_Label = _GDIPlus_FontCreate ($hFamily_Label, 8, 0)
    $tLayout_Label = _GDIPlus_RectFCreate ($GuiStart_width - 58, 3, 100, 20)
    $tLayout_Label2 = _GDIPlus_RectFCreate ($GuiStart_width - 128, $GuiStart_height - 45, 120, 80)
    _GDIPlus_GraphicsDrawStringEx ($hGraphic, $Version_Programm, $hFont_Label, $tLayout_Label, $hFormat_Label, $hBrush_Label)
    _GDIPlus_GraphicsDrawStringEx ($hGraphic,$Rechts_Unten , $hFont_Label, $tLayout_Label2, $hFormat_Label2, $hBrush_Label2)
    EndFunc

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

    ;-------------------------------------------------------------------------------------------------
    ; Label schreiben
    ;-------------------------------------------------------------------------------------------------
    Func Label()
    _GDIPlus_GraphicsDrawStringEx ($hBackbuffer, $Version_Programm, $hFont_Label, $tLayout_Label, $hFormat_Label, $hBrush_Label)
    _GDIPlus_GraphicsDrawStringEx ($hBackbuffer, $Rechts_Unten, $hFont_Label, $tLayout_Label2, $hFormat_Label2, $hBrush_Label2)
    EndFunc

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

    ;-------------------------------------------------------------------------------------------------
    ; Verändern
    ;-------------------------------------------------------------------------------------------------
    Func _StringSetNewText($sString,$Pos_X,$Pos_Y)
    _GDIPlus_GraphicsDrawImage($hBackbuffer, $hImage, 0, 0)
    Label()
    $hBrush = _GDIPlus_BrushCreateSolid("0x" & Hex(255, 2) & "FFFFFF")
    $hFormat = _GDIPlus_StringFormatCreate()
    $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFamily, $Schriftgroesse, $Schriftart)
    ;~ ConsoleWrite ( 14-((255/30)-($i/30))&@CRLF )
    $tLayout = _GDIPlus_RectFCreate( $Pos_X, $Pos_Y, 0, 0)
    ;~ ConsoleWrite ( 190+(255/5)-($i/5)&@CRLF )
    $aInfo = _GDIPlus_GraphicsMeasureString($hBackbuffer, $sString, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsDrawStringEx($hBackbuffer, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $GuiStart_width, $GuiStart_height)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    EndFunc

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

    ;-------------------------------------------------------------------------------------------------
    ; String Einblenden
    ;-------------------------------------------------------------------------------------------------
    Func _StringFadeIn($sString,$Pos_X,$Pos_Y,$Step = 25 ,$Time = 20 )
    $timerinit = TimerInit()
    For $i = 0 To 255 Step $Step
    Do
    Sleep (1)
    Until TimerDiff($timerinit) > $Time
    $timerinit = TimerInit()
    _GDIPlus_GraphicsDrawImage($hBackbuffer, $hImage, 0, 0)
    Label()
    $hBrush = _GDIPlus_BrushCreateSolid("0x" & Hex($i, 2) & "FFFFFF")
    $hFormat = _GDIPlus_StringFormatCreate()
    $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFamily, $Schriftgroesse-Round(((255/30)-($i/30)),0),$Schriftart)
    ;~ ConsoleWrite ( 11-((255/30)-($i/30))&@CRLF )
    If (255/6)-($i/6) < 2 Then
    $Pos_Y_Wert = $Pos_Y
    Else
    $Pos_Y_Wert = $Pos_Y+(255/6)-($i/6)
    EndIf
    $tLayout = _GDIPlus_RectFCreate( $Pos_X, $Pos_Y_Wert, 0, 0)
    ;~ ConsoleWrite ( 190+(255/5)-($i/5)&@CRLF )
    $aInfo = _GDIPlus_GraphicsMeasureString($hBackbuffer, $sString, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsDrawStringEx($hBackbuffer, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $GuiStart_width, $GuiStart_height)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    Next
    EndFunc

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

    ;-------------------------------------------------------------------------------------------------
    ; String Ausblenden
    ;-------------------------------------------------------------------------------------------------
    Func _StringFadeOut($sString,$Pos_X,$Pos_Y,$Step = 25 ,$Time = 15)
    $timerinit = TimerInit()
    For $i = 255 To 0 Step -$Step
    If $i < 11 Then $i = 0
    Do
    Sleep (1)
    Until TimerDiff($timerinit) > $Time
    $timerinit = TimerInit()
    _GDIPlus_GraphicsDrawImage($hBackbuffer, $hImage, 0, 0)
    Label()
    $hBrush = _GDIPlus_BrushCreateSolid("0x" & Hex($i, 2) & "FFFFFF")
    $hFormat = _GDIPlus_StringFormatCreate()
    $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFamily,$Schriftgroesse-((255/30)-($i/30)), $Schriftart)
    ;~ ConsoleWrite ( 14-((255/30)-($i/30))&@CRLF )
    $Pos_Y_Wert = $Pos_Y-(255/10)+($i/10)
    $tLayout = _GDIPlus_RectFCreate($Pos_X, $Pos_Y_Wert, 0, 0)
    ;~ ConsoleWrite ( 190+(255/5)-($i/5)&@CRLF )
    $aInfo = _GDIPlus_GraphicsMeasureString($hBackbuffer, $sString, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsDrawStringEx($hBackbuffer, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, $GuiStart_width, $GuiStart_height)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    Next
    EndFunc

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

    ;-------------------------------------------------------------------------------------------------
    ; Gui Einblenden
    ;-------------------------------------------------------------------------------------------------
    Func _WinFadeIn($hGuiStart,$timertime = 20 ,$blendzize = 1.25 )
    WinSetTrans($hGuiStart, "",0)
    GUISetState ( @SW_SHOW, $hGuiStart)
    $i = 1
    $timerinit = TimerInit()
    Do
    If TimerDiff($timerinit) > $timertime Then
    $i = $i*$blendzize
    If $i > 255 Then ExitLoop
    WinSetTrans($hGuiStart, "",$i)
    $timerinit = TimerInit()
    EndIf
    Until $i > 255
    WinSetTrans($hGuiStart, "",255)
    EndFunc

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

    ;-------------------------------------------------------------------------------------------------
    ; Gui Ausblenden
    ;-------------------------------------------------------------------------------------------------
    Func _WinFadeOut($hGuiStart,$timertime = 20 ,$blendzize = 0.75 )
    WinSetTrans($hGuiStart, "",255)
    $i = 255
    $timerinit = TimerInit()
    Do
    If TimerDiff($timerinit) > $timertime Then
    $i = $i*$blendzize
    If $i < 5 Then ExitLoop
    WinSetTrans($hGuiStart, "",$i)
    $timerinit = TimerInit()
    EndIf
    Until $i < 5
    WinSetTrans($hGuiStart, "",0)
    GUISetState ( @SW_HIDE, $hGuiStart)
    EndFunc

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

    ;-------------------------------------------------------------------------------------------------
    ; Image aus dll
    ;-------------------------------------------------------------------------------------------------
    Func _SetImagefromResource($CtrlID, $Resname, $Resfile = -1, $ResType = 10)
    Local Const $IMAGE_BITMAP = 0
    Local Const $STM_SETIMAGE = 0x0172
    Local $hmod, $hwnd, $InfoBlock, $ResSize, $Mem, $pMem, $dll, $dll2, $hData, $pData, $pStream, $ret, $hBitmap, $pBitmap
    $hmod = _WinAPI_LoadLibrary($Resfile)
    $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP(_WinAPI_LoadImage($hmod, $Resname, $IMAGE_BITMAP, 0, 0, 0))
    Return $hBitmap
    EndFunc

    [/autoit]

    dll im Anhang wird benötigt...

    MFG chris :D

    Dateien

    data.7z 37,05 kB – 248 Downloads
  • Fliegende Schrift über Bild mit GDI

    • chrisatack
    • 5. Juni 2010 um 19:38

    Danke UEZ....

    Wie immer perfekt ^^
    So wollte ich es haben...
    Aber wie schon gesagt in hinsicht GDI muss ich noch viel lernen...
    Nur eine Frage...wenn ich bei der Schrift den Alpha Kanal veränder dann muss ich die schrifft doch auch neu erstellen??

    MFG chris :D

  • Fliegende Schrift über Bild mit GDI

    • chrisatack
    • 5. Juni 2010 um 15:05

    huhu...

    Also da ich leider nur sehr wenig Ahnung in Sachen GDI habe, ich aber etwas brauche was meiner Meinung nach nur mit der GDi geht ... bräuchte ich mal etwas Hilfe..
    Ich habe bei mir in der Firma eine Informationssoftware entwickelt, die kurz vor der fertigstellung ist.
    Jetzt benötige ich aber damit beim starten des Servers es etwas schöner aussieht und die Wartezeit etwas verschleiert wird ein Art Intro.

    Eigentlich funktioniert es auch schon so wie ich es will... aber ich denke mal das es so sehr Umständlich gestaltet ist.
    Hier erst mal der Quellcode.. :S

    Spoiler anzeigen
    [autoit]


    #include-once
    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    #include <WinAPI.au3>
    #include <GDIPlus.au3>
    #include <StaticConstants.au3>

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

    $Gui_width = 430
    $Gui_height = 236
    $Gui_Pos_X = -1
    $Gui_Pos_Y = -1

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

    $hGui = GUICreate('', $Gui_width, $Gui_height ,$Gui_Pos_X,$Gui_Pos_y,$WS_POPUP, BitOR($WS_EX_TOOLWINDOW,$WS_EX_TOPMOST))

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

    $hpic_bg = GUICtrlCreatePic('',0,0,430,236)
    _SetImagefromResource($hpic_bg, "hg", "data.dll",2)

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

    $hLabel_Version = GUICtrlCreateLabel( 'v. 2.0.1.64',$Gui_width-105,3,100,10, $SS_RIGHT)
    GUICtrlSetBkColor ( -1,$GUI_BKCOLOR_TRANSPARENT )
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    GUICtrlSetColor (-1, 0xB0C4DE )
    $hLabel_Footer = GUICtrlCreateLabel( 'Lizenz: ---'&@CRLF& _
    'Beta Version'&@CRLF& _
    'C .Schiffer 2010',$Gui_width-125,$Gui_height-42,120,40,$SS_RIGHT)
    GUICtrlSetBkColor ( -1,$GUI_BKCOLOR_TRANSPARENT )
    GUICtrlSetFont(-1, 8, 400, 0, "Arial")
    GUICtrlSetColor (-1, 0x000000 )

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

    _WinFadeIn($hGui)

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

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($hGUI)
    Sleep ( 300 )
    _StringFadeIn('Starte',50,190)
    ;--------------------------------------------------------------
    ; Hier kommt der zu verarbeitende Prozess rein...
    Sleep ( 200 )
    _StringSetNewText('Starte.',50,190)
    Sleep ( 200 )
    _StringSetNewText('Starte..',50,190)
    Sleep ( 200 )
    _StringSetNewText('Starte...',50,190)
    Sleep ( 200 )
    _StringSetNewText('Starte....',50,190)
    Sleep ( 200 )
    ;--------------------------------------------------------------
    _StringFadeOut('Starte....',50,190)

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

    _StringFadeIn('prüfe Daten',50,190)
    ;--------------------------------------------------------------
    ; Hier kommt der zu verarbeitende Prozess rein...
    Sleep ( 200 )
    _StringSetNewText('prüfe Daten.',50,190)
    Sleep ( 200 )
    _StringSetNewText('prüfe Daten..',50,190)
    Sleep ( 200 )
    _StringSetNewText('prüfe Daten...',50,190)
    Sleep ( 200 )
    _StringSetNewText('prüfe Daten....',50,190)
    Sleep ( 200 )
    ;--------------------------------------------------------------
    _StringFadeOut('prüfe Daten....',50,190)

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

    _StringFadeIn('starte Server',50,190)
    ;--------------------------------------------------------------
    ; Hier kommt der zu verarbeitende Prozess rein...
    Sleep ( 200 )
    _StringSetNewText('starte Server (15%)',50,190)
    Sleep ( 200 )
    _StringSetNewText('starte Server (30%)',50,190)
    Sleep ( 200 )
    _StringSetNewText('starte Server (60%)',50,190)
    Sleep ( 200 )
    _StringSetNewText('starte Server (85%)',50,190)
    Sleep ( 200 )
    ;--------------------------------------------------------------
    _StringFadeOut('starte Server (100%)',50,190)
    Sleep (300)
    _WinFadeOut($hGui)

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

    ;-------------------------------------------------------------------------------------------------
    ; Verändern
    ;-------------------------------------------------------------------------------------------------
    Func _StringSetNewText($sString,$Pos_X,$Pos_Y)
    _SetImagefromResource($hpic_bg, "hg", "data.dll",2)
    GUICtrlSetState ( $hLabel_Version,$GUI_SHOW )
    GUICtrlSetState ( $hLabel_Footer,$GUI_SHOW )
    $hBrush = _GDIPlus_BrushCreateSolid("0x" & Hex(255, 2) & "FFFFFF")
    $hFormat = _GDIPlus_StringFormatCreate()
    $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFamily, 13, 1)
    ;~ ConsoleWrite ( 14-((255/30)-($i/30))&@CRLF )
    $tLayout = _GDIPlus_RectFCreate( $Pos_X, $Pos_Y, 0, 0)
    ;~ ConsoleWrite ( 190+(255/5)-($i/5)&@CRLF )
    $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sString, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
    EndFunc

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

    ;-------------------------------------------------------------------------------------------------
    ; String Einblenden
    ;-------------------------------------------------------------------------------------------------
    Func _StringFadeIn($sString,$Pos_X,$Pos_Y,$Step = 25 ,$Time = 20 )
    $timerinit = TimerInit()
    For $i = 0 To 255 Step $Step
    Do
    Sleep (1)
    Until TimerDiff($timerinit) > $Time
    $timerinit = TimerInit()
    _SetImagefromResource($hpic_bg, "hg", "data.dll",2)
    GUICtrlSetState ( $hLabel_Version,$GUI_SHOW )
    GUICtrlSetState ( $hLabel_Footer,$GUI_SHOW )
    $hBrush = _GDIPlus_BrushCreateSolid("0x" & Hex($i, 2) & "FFFFFF")
    $hFormat = _GDIPlus_StringFormatCreate()
    $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFamily, 13-((255/30)-($i/30)), 1)
    ;~ ConsoleWrite ( 14-((255/30)-($i/30))&@CRLF )
    If (255/8)-($i/8) < 2 Then
    $Pos_Y_Wert = $Pos_Y+0
    Else
    $Pos_Y_Wert = $Pos_Y+(255/8)-($i/8)
    EndIf
    $tLayout = _GDIPlus_RectFCreate( $Pos_X, $Pos_Y_Wert, 0, 0)
    ;~ ConsoleWrite ( 190+(255/5)-($i/5)&@CRLF )
    $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sString, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
    Next
    EndFunc

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

    ;-------------------------------------------------------------------------------------------------
    ; String Ausblenden
    ;-------------------------------------------------------------------------------------------------
    Func _StringFadeOut($sString,$Pos_X,$Pos_Y,$Step = 25 ,$Time = 15)
    $timerinit = TimerInit()
    For $i = 255 To 0 Step -$Step
    If $i < 11 Then $i = 0
    Do
    Sleep (1)
    Until TimerDiff($timerinit) > $Time
    $timerinit = TimerInit()
    _SetImagefromResource($hpic_bg, "hg", "data.dll",2)
    GUICtrlSetState ( $hLabel_Version,$GUI_SHOW )
    GUICtrlSetState ( $hLabel_Footer,$GUI_SHOW )
    $hBrush = _GDIPlus_BrushCreateSolid("0x" & Hex($i, 2) & "FFFFFF")
    $hFormat = _GDIPlus_StringFormatCreate()
    $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFamily, 13-((255/30)-($i/30)), 1)
    ;~ ConsoleWrite ( 14-((255/30)-($i/30))&@CRLF )
    $tLayout = _GDIPlus_RectFCreate($Pos_X, $Pos_Y, 0, 0)
    ;~ ConsoleWrite ( 190+(255/5)-($i/5)&@CRLF )
    $aInfo = _GDIPlus_GraphicsMeasureString($hGraphic, $sString, $hFont, $tLayout, $hFormat)
    _GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $aInfo[0], $hFormat, $hBrush)
    Next
    EndFunc

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

    ;-------------------------------------------------------------------------------------------------
    ; Gui Einblenden
    ;-------------------------------------------------------------------------------------------------
    Func _WinFadeIn($hGui,$timertime = 20 ,$blendzize = 1.25 )
    WinSetTrans($hGui, "",0)
    GUISetState ( @SW_SHOW, $hGui)
    $i = 1
    $timerinit = TimerInit()
    Do
    If TimerDiff($timerinit) > $timertime Then
    $i = $i*$blendzize
    If $i > 255 Then ExitLoop
    WinSetTrans($hGui, "",$i)
    $timerinit = TimerInit()
    EndIf
    Until $i > 255
    WinSetTrans($hGui, "",255)
    EndFunc

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

    ;-------------------------------------------------------------------------------------------------
    ; Gui Ausblenden
    ;-------------------------------------------------------------------------------------------------
    Func _WinFadeOut($hGui,$timertime = 20 ,$blendzize = 0.75 )
    WinSetTrans($hGui, "",255)
    $i = 255
    $timerinit = TimerInit()
    Do
    If TimerDiff($timerinit) > $timertime Then
    $i = $i*$blendzize
    If $i < 5 Then ExitLoop
    WinSetTrans($hGui, "",$i)
    $timerinit = TimerInit()
    EndIf
    Until $i < 5
    WinSetTrans($hGui, "",0)
    GUISetState ( @SW_HIDE, $hGui)
    EndFunc

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

    ;-------------------------------------------------------------------------------------------------
    ; Image aus dll
    ;-------------------------------------------------------------------------------------------------
    Func _SetImagefromResource($CtrlID, $Resname, $Resfile = -1, $ResType = 10)
    Local Const $IMAGE_BITMAP = 0
    Local Const $STM_SETIMAGE = 0x0172
    Local $hmod, $hwnd, $InfoBlock, $ResSize, $Mem, $pMem, $dll, $dll2, $hData, $pData, $pStream, $ret, $hBitmap, $pBitmap
    $hmod = _WinAPI_LoadLibrary($Resfile)
    If $ResType = 2 Then
    $hBitmap = _WinAPI_LoadImage($hmod, $Resname, $IMAGE_BITMAP, 0, 0, 0)
    If @error Then Return SetError(1, 0, 0)
    $hwnd = GUICtrlGetHandle($CtrlID)
    If $hwnd = 0 Then Return SetError(2, 0, 0)
    DllCall("user32.dll", "hwnd", "SendMessage", "hwnd", $hwnd, "int", $STM_SETIMAGE, "int", $IMAGE_BITMAP, "int", $hBitmap)
    If @error Then Return SetError(3, 0, 0)
    EndIf
    EndFunc

    [/autoit]


    Damit man das Bild sieht müsst ihr die dll im Verzeichnis haben, die Angehangen ist.

    In meiner jetztigen Version Zeichne ich immer in eine GDI Grafik den Text und überschreibe es dann wieder mit dem Hintergrundbild..
    das ist aber etwas unsinnig und flackert etwas...

    Wäre froh über einen bessere Lösung...
    Danke schonmal

    MFG chris :D

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™