hey leute
ich versuche mich an einem input-feld mit gdi+
ich will jetzt die tastendrücke abfragen und dann mit _GDIPlus_GraphicsDrawString ausgeben lassen
die frage die ich habe ist, wie ich den letzten Buchstaben wieder löschen kann, wenn man backspace drückt
danke
DFPWare
_GDIPlus_GraphicsDrawString Backspace
-
- [ gelöst ]
-
DFPWare -
11. Dezember 2010 um 13:50 -
Geschlossen -
Erledigt
-
-
Hier ein Beispiel, was ein wenig in die Richtung zeigt:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;coded by UEZ 2010-12-09
#include <EditConstants.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>$width = 608
[/autoit] [autoit][/autoit] [autoit]
$heigth = 160
$hGUI = GUICreate("Bitmap Font to Screen by UEZ 2010", $width, $heigth, -1, -1)
$bgc = "B0B0F0"
GUISetBkColor("0x" & $bgc, $hGUI)
$Input = GUICtrlCreateInput("", 80, 8, 513, 21)
$Label = GUICtrlCreateLabel("Enter any text:", 8, 8, 72, 17, $SS_CENTERIMAGE)
GUISetState(@SW_SHOW)
_GDIPlus_Startup()
$factor1 = 0.666667
$factor2 = 1 - $factor1
$gfx_w = $width
$gfx_h = $heigth * $factor1
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($gfx_w, $gfx_h, $hGraphic)
$hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
If Not FileExists("fontjs.png") Then Extract_Bitmap()
$hImage = _GDIPlus_ImageLoadFromFile("fontjs.png")
_GDIPlus_GraphicsSetInterpolationMode($hBackbuffer, 5)
_GDIPlus_GraphicsClear($hBackbuffer, 0xFFB0B0F0)GUIRegisterMsg($WM_COMMAND, 'Print_Bitmap_Font')
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_GDIPlus_ImageDispose($hImage)
_GDIPlus_GraphicsDispose($hBackbuffer)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
GUIDelete($hGUI)
Exit
EndSwitch
WEndFunc Print_Bitmap_Font($hWnd, $Msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
Local $fw = 16, $fh = 16, $size = 1, $dx = 9.5 * $size
Local $chk$chk = BitAND($wParam, 0x0000FFFF)
[/autoit] [autoit][/autoit] [autoit]
Switch $chk
Case $Input
$inp = GUICtrlRead($Input)
$inp_len = StringLen($inp)
If $inp_len < Ceiling($width / $dx - 2) Then
$aInp = StringSplit($inp, "", 2)
_GDIPlus_GraphicsClear($hBackbuffer, "0xFF" & $bgc)
For $i = 0 To $inp_len - 1
$x = Mod(Asc($aInp[$i])-32, 32)
$y = Floor((Asc($aInp[$i])-32) / 32)
_GDIPlus_GraphicsDrawImageRectRect($hBackbuffer, $hImage, $x * $fw, $y * $fh, $fw -1, $fh -1, $fw + $i * $dx, $gfx_h / 2 - ($fh * $size / 2), $fw * $size, $fh * $size)
Next
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, $heigth * $factor2, $gfx_w, $gfx_h)
EndIf
EndSwitchReturn "GUI_RUNDEFMSG"
[/autoit] [autoit][/autoit] [autoit]
EndFuncFunc _GDIPlus_GraphicsSetInterpolationMode($hGraphics, $iInterpolationMode)
[/autoit] [autoit][/autoit] [autoit]
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "hwnd", $hGraphics, "int", $iInterpolationMode)
If @error Then Return SetError(@error, @extended, False)
Return $aResult[0] = 0
EndFunc ;==>_GDIPlus_GraphicsSetInterpolationModeFunc Extract_Bitmap()
[/autoit]
Local _
$Bitmap_Font = '0x89504E470D0A1A0A0000000D49484452000002000000008002030000000039399800000009504C5445FE00FE000000FEFEFE8676FDBE0000000174524E530040E6D866000009EA49444154785EED5A'
$Bitmap_Font &= 'DD6AE4B81296A1E56B0FD80DADA7D1C24CAE3DE0043AD776407E1A2DCC0C24D7DDE1789EF2A8FE285BEAD39BD93DE7ECC5BAE08BD4FAFD5492AACA760C480BE8D39FCF09DE18EB7D0295579896221D6D'
$Bitmap_Font &= '9F6020259826A543EA97F2DDA0E5B7C47ACE04C025757A4D85D118F77B342E5279CDA9F10C15AC7097040F29C18C295D52BF949F172DD759997B828B1901FB4A8DC3BB87DF58EE3CE1D3EF89602C0984'
$Bitmap_Font &= '84D9434AA860C281D0052D6F0DC13C7BEA9A92E99211703FBD09AF8670F5665C11987EF88C004D16028DD906989056EEFA54DE4B3DC310EC35B57B34E6F82D2D4A09D019A8A7944F156E4AF8114D6374'
$Bitmap_Font &= '1B4E8954F79DDA778F5B02CE439E263FB1CAE7848AF34A80C8CD69A11590D52D20398ED4C1BE79DC06A3046070EC0822691D8500E5AB806A15D56BFDA25B30C9028E1EFA91B494E0A13942C797983A42'
$Bitmap_Font &= '6DA98196076833028036D0186D46C00625E07AE84F64ADC934704AEA7F09297D4F049ED704E40C485B39A04A200C94EF56FB2EF5F6B23E03A8413C03CEE704226DC1387BE3120993DD829200EF77942B'
$Bitmap_Font &= '27FB9E5D4FEE17E816A0068237E5161C602F7B639A2E31FDEA37040C23481F5911A8D4ABD1313DA49981F2DA5EED00664BA9B2DF648854C68D19F83519CD2F4B698A9B8D25FEA068DF5276D9A57A64DF'
$Bitmap_Font &= '9D6039ED06824D686DCA7BAA6B5BB168DE3415D4637B4DD1CA79E8436DBF7A4A5B1E130F34A5A6976BF6D3939D17270258082E21386FE69839952A9AB1F6500FED35457F11A10FB57D8F94061E13AF34'
$Bitmap_Font &= 'A59578C2D36334B50C7EE674603C791CCC7936A7171EE0219A900884679C0853E9DF5DFD4D021DA46CC88EE0DC1626302DD138F1D9075CB112A8707071B7BA82B79848AC269274C0761B026296AB05FA'
$Bitmap_Font &= 'AAE774EC6BCCCB2B11987175D459B62074E8389400AFE0250DFCF2A324305F9480A3008726C358614B20C01F2520FB9B696006359704A61FD14CEF488088437A85B370930042634C425BA9066095DB2D'
$Bitmap_Font &= '304A06906FC1F810C163527DCFED30102908D0EA239357022AD34F5C65760899C0B312E8F01052DD5827028EFB193D84931078E695F378759431A13E23707A44C6C5350C065720D71021D769ACF91A4A'
$Bitmap_Font &= 'BB45575DD1B5CC08F0982501BA0EADCD0D11FBEB47AEF30035284DC58648DA5DB19DC6030379D1EA407D2A8E1782A7BD3D46096EA1D160FEBACCFE63CD2210E0D490D1FAEF48F7C166C0B3C55435B0CB'
$Bitmap_Font &= '2E6D964AA6EAF5A7BE2700DC177BAF72D078A008AD4356505FE4A79850C9DF1777E7608B479CFB8C80E5C7690B08943AC80F54DE4A9B96DA775FD6868B0D52AFFDDA368F88A85DFD0DFBAB211AC0141B'
$Bitmap_Font &= '35C10EB0AC7E2FE2A6D99B058907C4746BBBA0BFA15D1911A109566DDA8ACCB3392458E9D06B67A779662D11910EACE0895103B70974171EC39026DC8337D359F66D9189D4E1382F0329EB391604143D'
$Bitmap_Font &= 'D66B3F8D880A975C2DF4B43D9E0C8A7690FCE39F20805B29FD302F0408FE2304447DE7DB04C2E53E81EE225BC0933E7B8D07FAED168CC1ACB7A03C84CE433E2310B604F4106AB85D6B3CB022501EC2A6'
$Bitmap_Font &= 'C5AD26D1070BCCEBB37DD0879163D43C5F2FBDBE410D4CB58A07ACA53ECEDFB986F7C45DFED8E507FE73DF386586E8A35ED8F67FECF25BFA73576C6E8AB56A975DB2A8B85B957B8245783990C6DE0824'
$Bitmap_Font &= '5B418FD8886DD2B09F6E7F333834F45C70EBAEE9331D7F3F902BE96E84D24170416CC48D69D8170FFD0B398DD0E0C98B4130D5552B8FDF003CE83B69A042B34DED152501BB52D20BBE678ED81F166C3B'
$Bitmap_Font &= 'EDD782DAE6AB9AC44A5962D9FC2F526978658FE69100D62928A6187945136B4DE4934702D81F173C6BFF801E6C50A7502F850650DCB4725073C4F60A8A291ADED3C693DDEF067DF0387D8F26F4E247B4'
$Bitmap_Font &= 'BFBBB003194FA506EAA8042C4640E2AED18DAE918BBE67E2F372F05E63855446FD9880FB8D7EB44CA0EDC9D9D451B686BE1FB8E55708A806583456B86AFF3AF2219CCE99CF7F8F1B0D9C406D4162049F'
$Bitmap_Font &= '6F41212E96659D68F02A5BC0046A3A101AF7290100CA387B3E84780DF3435888F565D91CF910BEC921E4F12BBE12239B8129E216882102C1EF07720DED63710D3F249DE76BF845FB554A942A3B48BDF9'
$Bitmap_Font &= '07CA2EBBB4267B27D0EA1371836FD2CABB5DB1A5B372CD18F66650AAFD2D42DF396868EDF59D803E6A915DA897D2BAD56CEBE59BE2CC7032D1B00ECBB5BFFB8D10AAECE3B505677136A6392881702602'
$Bitmap_Font &= 'A7278FDF0BAACAB060196800EBAB842323B006DDB28E73C8C2364DCA3F78844B1002A61567F159DC241318680BA66B24539C3A89BC5CB1B710D00FD8F284FDAA041C1318475824219CB22DC0A0A36722'
$Bitmap_Font &= '17D9027DA31EA09CBFFB767D2A3B471E9CBEAA072F8F5C4AA0CD0840B99B04D916846FE4464F237841590913F80E1AE0817F426CA01AB086CBF0F97F4B20AC1C91E387D5D31B2124389F11703D119897'
$Bitmap_Font &= '8C00C674F4BB7BF2AA0114D240E7138C12704A00EBAC2702F5EC31BE38A63434D9168401D40E1AD86EC184ABC501C8279B2D814AB22B0216B7A028270D38D6C288C53AD9BC48A040655DD0130F523F10'
$Bitmap_Font &= '012D530DA8D038D56BFE359E0EA14D57F7103CA64E6F015DC36EA06B58C9B7A1B00E56F91A56DB32FD9F1295302881A356E13534A0C539429A1937F9916945AC9E4A59D63DE67D954028CCA21C8A0F98'
$Bitmap_Font &= '67DBFF05D3FE59F37765975D2AFE965F01D2C1391C38FFE8F9759DD61F1AF5E39623683B503F6B8A7148AAF51C5CDEAF0E791DF96322E0D598D389F360282ED93FAA8DF20445E513A40BF573BE1807C5'
$Bitmap_Font &= '3EF9D51C545EA9B3D32F990ECCE48556743AC36F6F025A45ADEF06984827EF3C3B98ABB6D371F42D6C97EA8FDFA9AEB56CEAC9B7B0CAF40D29B0041081034CAA9861302F602FF7144D78F2D85F411337'
$Bitmap_Font &= '0D7D471674DDE6533FA432618990460F68D715014844850312EF91229C54AFC089D1F607F9CAAE60D7CEAF735CB88D79F11C1509E43B428627FE6786E70CE0F1C0A9BDDD2110EE10088043A18192C083'
$Bitmap_Font &= 'FC3343891A34F47CA33CCA169027BB89808770A381DB0440D5B3AE5C411A28CB81801E42292C31478E1132C43568BF47E7212D308E9A5748BCC167A0B5FF019DE71821835F810D516321CD41B7602ACB'
$Bitmap_Font &= 'F52368FF673E42FE3FFF85CF9AFFBDECB28BFA71CF7EBCC1BC48190F5099C6030DA11CE7D61C502EF100E5D58F47F6E323E545CA7860EB92DD4828C7E1851CD675502EF100E6A1502AD88FF794B75F28'
$Bitmap_Font &= 'AF7E9E7E3B0F9D251EA0BA97988FA37DED59DEBC535DDB6A3CD05258B485BB30DE3CA45A3750B935FA95D4799AACEB6F8D4304D4F3E18492176724132A6C2074E0E1D684B883F3DB6DB03C98CB103882'
$Bitmap_Font &= '0AE12E7842853A0DF08866DB785E7202D456DB94ED4359AF8BB99AC25369C35459464439817BABE3302EDC2420695E9911E8B378E0FC6B04EA78A71C53D54009FA4690A124A0ABC92187F0763C3073BD'
$Bitmap_Font &= 'F8E8125D42CC4FB7DE022BA0EB54B663C333F5F9D8BC881ED2BF291E502DFE2DF1C0568BBBECB2CB2EBBECB2CB2EBBECF26FA1A2D2830F13B5A20000000049454E44AE426082'
$hFile = FileOpen("fontjs.png", 18)
FileWrite($hFile, $Bitmap_Font)
FileClose($hFile)
EndFuncGruß,
UEZ -
Hi,
wie währs damit ?Spoiler anzeigen
[autoit]#include <WinAPI.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
#include <Misc.au3>
#include <WindowsConstants.au3>
HotKeySet("{Esc}", "_Exit")$hGUI = GUICreate("", 500, 500,-1,-1,$WS_POPUP)
[/autoit] [autoit][/autoit] [autoit]$hGUI_DC = _WinAPI_GetDC($hGUI)
[/autoit] [autoit][/autoit] [autoit]
$hBitmap = _WinAPI_CreateCompatibleBitmap($hGUI_DC, 500, 500)
$hBitmapDC = _WinAPI_CreateCompatibleDC($hGUI_DC)
_WinAPI_SelectObject($hBitmapDC, $hBitmap)GUISetState()
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$hGraphics = _GDIPlus_GraphicsCreateFromHDC($hBitmapDC)
$hBrush_Weiss = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)Global $sText, $hDll = DllOpen("user32.dll")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While Sleep(50)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsFillRect($hGraphics, 0, 0, 500, 500, $hBrush_Weiss)For $x = 48 To 90
[/autoit] [autoit][/autoit] [autoit]
If _IsPressed("2E", $hDll) Or _IsPressed("08", $hDll) Then
$sText = StringTrimRight($sText, 1)
WhilePressing("2E")
WhilePressing("08")
EndIfIf _IsPressed(Hex($x, 2), $hDll) Then
[/autoit] [autoit][/autoit] [autoit]
$sText &= Chr($x)WhilePressing(Hex($x, 2))
[/autoit] [autoit][/autoit] [autoit]
EndIf
Next_GDIPlus_GraphicsDrawString($hGraphics, $sText, 0, 50)
[/autoit] [autoit][/autoit] [autoit]
_WinAPI_BitBlt($hGUI_DC, 0, 0, 500, 500, $hBitmapDC, 0, 0, $SRCCOPY)
WEndFunc WhilePressing($Key)
[/autoit] [autoit][/autoit] [autoit]
While _IsPressed($Key, $hDll)
Sleep(10)
WEnd
EndFunc ;==>WhilePressingFunc _Exit()
[/autoit]
;~ _GDIPlus_PenDispose($hPen_Schwarz)
;~ _GDIPlus_BrushDispose($hBrush_Schwarz)
_GDIPlus_BrushDispose($hBrush_Weiss)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_Shutdown()
_WinAPI_ReleaseDC($hGUI, $hGUI_DC)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteDC($hBitmapDC)
DllClose($hDll)
Exit
EndFunc ;==>_Exit