Die aktuelle Beta beinhaltet eine Menge der GDIPlus Funktionen aus der GDIP.au3.
Gruß,
UEZ
Die aktuelle Beta beinhaltet eine Menge der GDIPlus Funktionen aus der GDIP.au3.
Gruß,
UEZ
Kannst dazu die Beta benutzen -> _GDIPlus_ImageResize() und als $iInterpolationMode Parameter $GDIP_INTERPOLATIONMODE_NEARESTNEIGHBOR verwenden.
$GDIP_INTERPOLATIONMODE_NEARESTNEIGHBOR = 5
Gruß,
UEZ
War eher als Alternative gedacht... ![]()
Gruß,
UEZ
Wenn du das Icon als Bitmap benötigst, kannst du z.B.
[autoit]$hIcon = _WinAPI_ShellExtractIcon(@SystemDir & '\shell32.dll', 32, 48, 48)
[/autoit][autoit][/autoit][autoit]$hBitmap = _GDIPlus_BitmapCreateFromHICON32($hIcon)
[/autoit]
benutzen.
Benötigt die aktuelle Beta.
Gruß,
UEZ
In Zeile 68 einfach eine 8 in die Hex-Anweisung mitgeben ->
[autoit]If Hex(DllStructGetData($PixelData, 1),
= $Color Then
Dann sollte es funzen. In diesem Beitrag weiter unten gibt es die LEDTXT.au3...
Gruß,
UEZ
Andy: _GDIPlus_BitmapCreateFromScan0() hatte ich geändert, da $iStride und $pScan0 eher selten genutzt werden und somit am Ende besser aufgehoben sind. Am besten die neuste Beta benutzen. ![]()
Btw,
ich würde gerne eine Bitmap mit zufälligen Grauwerten immer wieder füllen lassen, aber ich scheitere gerade an der Random Funktion.
Keine Ahnung, was noch zur Hürde wird.
Mein Ansatz war dieser:
aber dann schmiert das Skript ab.
Gruß,
UEZ
Und dann experimentier mal mit DEINER Materie - GdiPluslgE
Mit UNSERER Materie bitte! ![]()
Ich werde mich daran versuchen...
Hier auch blau zu weiß ASM Code (war nicht so schwer):
#ASM _ASM_Red2White
# use32
# mov esi, [esp+4]
# mov ecx, [esp+8]
# _Loop:
# mov eax, [esi]
# _FASM_DBG("_Debug_1")
# cmp eax, 0xFFFF0000
# je _Red2White
# cmp eax, 0xFF0000FF
# je _Blue2White
# jmp _NotEqual
# _Red2White:
# mov dword[esi], 0xFFFFFFFF
# _FASM_DBG("_Debug_2")
# jmp _NotEqual
# _Blue2White:
# mov dword[esi], 0xFFFFFFFF
# _FASM_DBG("_Debug_2")
# _NotEqual:
# add esi, 4
# sub ecx, 1
# jg _Loop
# ret 8
#ASMEND
Alles anzeigen
Danke und Gruß,
UEZ
Klasse Umsetzung! ![]()
![]()
Ich glaube, dass ich doch endlich ASM lernen sollte, damit ich die feinen ASM Sachen hier aus dem Forum anwenden kann.
Habe bereits mit minx' ASM Tutorial angefangen, aber hat sich wieder im Sande verlaufen... ![]()
Vielleicht könnte man ein paar Beispiele mit ASM strukturiert aufsetzen und die Hürde AMS zu lernen dadurch herabsetzen. Ich denke da an ein separates Thema mit "How to Code in ASM", wo dann Beispiele gepostet werden. gibt's ja schon
-> https://autoit.de/index.php?page=Thread&postID=181436 (Danke an TheShadowAE für den Hinweis)!
Gruß,
UEZ
Herzlichen Glückwunsch zum Geburtstag und alles Gute!
[Blockierte Grafik: http://www.hotel-luganodante.com/uploads/happyBirthday_mypage.jpg]
Gruß,
UEZ
Kurze Antwort: probiere es mal damit:
[autoit]
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$hGUI = GUICreate("Form1", 279, 40, -1, -1)
$Input1 = GUICtrlCreateInput("", 8, 8, 33, 21, $ES_NUMBER)
$Input2 = GUICtrlCreateInput("", 55, 8, 33, 21, $ES_NUMBER)
$Input3 = GUICtrlCreateInput("", 103, 8, 33, 21, $ES_NUMBER)
$Input4 = GUICtrlCreateInput("", 146, 8, 33, 21, $ES_NUMBER)
$x = GUICtrlCreateLabel("-", 45, 9, 7, 17)
$Label2 = GUICtrlCreateLabel("-", 139, 9, 9, 17)
$Label3 = GUICtrlCreateLabel("-", 92, 9, 9, 17)
$Zahl = GUICtrlCreateButton("Zahl", 192, 8, 75, 25)
GUISetState(@SW_SHOW)
ControlFocus($hGUI, "", $Zahl)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Zahl
MsgBox(0, "Zufallszahl", GUICtrlRead($Input1) & "-" & GUICtrlRead($Input2) & "-" & GUICtrlRead($Input3) & "-" & GUICtrlRead($Input4))
EndSwitch
$aMousePos = GUIGetCursorInfo($hGUI)
Switch $aMousePos[4]
Case $Input1
GUICtrlSetData($Input1, StringFormat("%04d", Random(0, 9999, 1)))
Case $Input2
GUICtrlSetData($Input2, StringFormat("%04d", Random(0, 9999, 1)))
Case $Input3
GUICtrlSetData($Input3, StringFormat("%04d", Random(0, 9999, 1)))
Case $Input4
GUICtrlSetData($Input4, StringFormat("%04d", Random(0, 9999, 1)))
EndSwitch
WEnd
Einfach mit der Maus über die Input Felder gehen...
Gruß,
UEZ
Hier ein Link, falls du die Sache "mathematisch" angehen möchtest: Flake: Echtzeit-Simulation von Windfeldern mit OpenCL zur Modellierung von Schneefall (PDF-Version der Arbeit -> Vorgeschmack auf ein Informatikstudium ;))
Gruß,
UEZ
Probiere es mal damit:
[autoit]
#include <Date.au3>
$Qstart=1
$yStart=2011
$QEnde=1
$YEnde=2013
ConsoleWrite(_DateDiff("M", $yStart & "/" & $Qstart * 3 & "/01", $YEnde & "/" & 3 * $QEnde & "/01") / 3 + 1 & @LF)
[/autoit]Gruß,
UEZ
Herzlichen Glückwunsch zum Geburtstag und alles Gute lieber Raupi.
Feier schön "alter Sack".
Gruß,
UEZ
Vielen Dank für die Glückwünsche!
Heute genau vor 5 Jahren, und sogar auf die Minute genau, habe mich hier registriert und eine Menge Dinge über AutoIt und das Programmieren gelernt und nette Leute kennen gelernt, auch persönlich.
Ich hoffte, dass ich noch weiter hier aktiv sein kann und meinen Beitrag leisten kann.
Prost auf die nächsten 5 Jahre! ![]()
Gruß,
UEZ
Aus dem engl. Forum hat jemand gefragt, ob man in AutoIt einen Marker mit Text erstellen kann, der so ähnlich aussieht, wie in diesem Bild: http://www.google.com/mapfiles/markerA.png
Deshalb die Frage, wie man solch einen "Tropfen" erstellen kann.
Ich habe mir das Leben etwas einfacher gemacht und es "nur" ähnlich gehalten, da mir nichts besseres eingefallen ist.
Danke Andy für die mathematische Lösung. ![]()
Hier die Lösung, ohne viel Mathe (benötigt die aktuelle Beta![]()
;coded by UEZ build 2013-11-24
#AutoIt3Wrapper_Version=b
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
_GDIPlus_Startup()
Global $hGUI = GUICreate("GDI+ Example", 340, 400)
GUISetState()
Global Const $hGfx = _GDIPlus_GraphicsCreateFromHWND($hGUI)
Global $hBitmap = _GDIPlus_CreateMarkerWithText("AutoIt" & @LF &"rulez")
;~ Global $hBitmap = _GDIPlus_CreateMarkerWithText("A")
_GDIPlus_GraphicsDrawImage($hGfx, $hBitmap, 0, 5)
Do
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
_GDIPlus_GraphicsDispose($hGfx)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
GUIDelete()
Exit
EndSwitch
Until False
Func _GDIPlus_CreateMarkerWithText($sText, $sFont = "Comic Sans MS", $iFSize = 15.5, $iFColor = 0xFF1F0F0F,$iColorBorder = 0xFF1F0F0F, $iColorFill = 0xFFFF766A) ;beta
Local Const $hFormat = _GDIPlus_StringFormatCreate()
Local Const $hFamily = _GDIPlus_FontFamilyCreate($sFont)
Local Const $hFont = _GDIPlus_FontCreate($hFamily, $iFSize)
_GDIPlus_StringFormatSetAlign($hFormat, 1)
Local $tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
Local Const $hGfx_tmp = _GDIPlus_GraphicsCreateFromHDC(_WinAPI_GetWindowDC(0))
Local $aInfo = _GDIPlus_GraphicsMeasureString($hGfx_tmp, $sText, $hFont, $tLayout, $hFormat)
_GDIPlus_GraphicsDispose($hGfx_tmp)
Local $iW = $aInfo[0].Width, $iH = $aInfo[0].Height, $iHF = 3
If $iW < 9 Then $iW = 9
Local Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($iW * 2, $iH * $iHF)
Local Const $hGfxCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetSmoothingMode($hGfxCtxt, $GDIP_SMOOTHINGMODE_HIGHQUALITY)
_GDIPlus_GraphicsSetTextRenderingHint($hGfxCtxt, $GDIP_TEXTRENDERINGHINT_ANTIALIASGRIDFIT)
Local Const $hBrushBgColor = _GDIPlus_BrushCreateSolid($iColorFill)
Local Const $hBrushFontColor = _GDIPlus_BrushCreateSolid($iFColor)
Local Const $hPen = _GDIPlus_PenCreate($iColorBorder, 2)
Local Const $hPath = _GDIPlus_PathCreate()
_GDIPlus_PathAddPie($hPath, $iW / 4, 0, $iW * 1.5 - 2, $iH * 2, 150, 240)
Local $aCoords = _GDIPlus_PathGetPoints($hPath)
Local $aPoints[4][2] = [[3]]
$aPoints[1][0] = $aCoords[2][0]
$aPoints[1][1] = $aCoords[2][1]
$aPoints[2][0] = $iW
$aPoints[2][1] = $iH * $iHF - 7
$aPoints[3][0] = $aCoords[UBound($aCoords) - 1][0]
$aPoints[3][1] = $aCoords[UBound($aCoords) - 1][1]
_GDIPlus_PathAddCurve2($hPath, $aPoints, 0.25)
_GDIPlus_GraphicsDrawPath($hGfxCtxt, $hPath, $hPen)
_GDIPlus_GraphicsFillPath($hGfxCtxt, $hPath, $hBrushBgColor)
_GDIPlus_GraphicsFillEllipse($hGfxCtxt, $iW / 4 + 1, 1, 2 * $iW * 0.75 - $iHF - 1, $iH * ($iHF - 1), $hBrushBgColor)
_GDIPlus_PathReset($hPath)
$tLayout.X = $iW - 1
$tLayout.Y = $iH * 0.25
_GDIPlus_PathAddString($hPath, $sText, $tLayout, $hFamily, 0, $iFSize + 4, $hFormat)
_GDIPlus_GraphicsFillPath($hGfxCtxt, $hPath, $hBrushFontColor)
_GDIPlus_PenDispose($hPen)
_GDIPlus_BrushDispose($hBrushBgColor)
_GDIPlus_BrushDispose($hBrushFontColor)
_GDIPlus_PathDispose($hPath)
_GDIPlus_FontDispose($hFont)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_GraphicsDispose($hGfxCtxt)
Return $hBitmap
EndFunc
Gruß,
UEZ
Der Screenshooter erstellt vom Bereich eine Bitmap und schickt die Bitmap zum Encoder und das n mal die Sekunde.
Was der Encoder mit den Bitmap sukzessive genau macht, weiß ich nicht.
Gruß,
UEZ
Ich habe einige Kommentare hinzugefügt:
[autoit]
Func Btn_Drehen()
$f = Random(5, 15) ;zufälligen Drehwinkel in Grad erstellen
Do
If $f > 0 Then
Drehen($f) ;drehe Scheibe um $f Grad
$ff += $f ;addiere Drehwinkel zur Drehwinkel Summe ($ff)
$f -= 0.1 ;reduziere Drehwinkel um 1/10 Grad pro Schleifendurchgang
Else
$iRunden = Floor($ff / 360) ;messe Anzahl der Runden
$iSegment = Mod($iRunden + Ceiling($ff / 15), 25) ;bestimme Segment -> 24 Segmente zu je 15°
If Not $iSegment Then $iSegment += 1 ;korrigiere, wenn Segment Kalulation = 0 ist
If Mod($ff, 15) > 14.45 Or Mod($ff, 15) < 0.55 Then $iSegment = 0 ;finde "Kippe"
GUICtrlSetData($iLbl_Preis, $aFelder[$iSegment]) ;zeige "Gewinn"
ExitLoop
EndIf
Until False * Sleep(30)
EndFunc
Ich hoffe, dass es jetzt "klarer" wird.
Gruß,
UEZ
Andy: in AutoIt Windows Screenshooter wird der Avi Film On-the-fly erstellt, ohne vorher die einzelnen Frames zu speichern. Ferner kannst du theoretisch solange dein Desktop oder einen Bereich daraus aufnehmen, bis die Platte voll ist (habe ich aber nicht getestet).
Gruß,
UEZ