Hallo
ist es möglichen den Input transparent zu machen damit man nur die zeichen sieht und das hintergrundbild?
Input transparent machen
-
- [ offen ]
-
Freaky -
23. Dezember 2009 um 13:34 -
Geschlossen -
Erledigt
-
-
Das geht nicht wirklich gut. Hatte da mal so eine Bastellösung entworfen:
Spoiler anzeigen
[autoit]#cs **************************************************************************
[/autoit]
GUICtrlCreateInput - Transparenter Hintergrund / Hintergrundbild
http://www.autoit.de/index.php?page…79946#post79946
#ce **************************************************************************
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt('GUIOnEventMode', 1)
GUICreate("Quasi-Transparentes Input-Control", 300, 300)
GUISetOnEvent(-3, '_Ende')
GUIRegisterMsg($WM_COMMAND, 'MY_WM_NOTIFY')
Global $hInput = GUICtrlCreateInput('', 20, 20, 260, 20, 0x200)
GUICtrlCreatePic(@DocumentsCommonDir&'\Eigene Bilder\Beispielbilder\Sonnenuntergang.jpg', 0, 0, 300, 300, 0)
Global $hLabel = GUICtrlCreateLabel('', 20, 20, 260, 20, 0x200, 0x00000008)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Global $hInput2 = GUICtrlCreateInput('', 20, 80, 260, 20, 0x200)
GUISetState()
While 1
Sleep(10000)
WEnd
Func _Copy()
GUICtrlSetData($hLabel, ' '&GUICtrlRead($hInput))
EndFunc
Func _Ende()
Exit
EndFunc
Func MY_WM_NOTIFY($hWnd, $msg, $wParam, $lParam)
Local $nID = BitAND($wParam, 0x0000FFFF)
If $nID = $hInput Then _Copy()
EndFunc -
Sprichst du von einer GUI? Wenn ja nimm doch ein Label. Soll es denn funktionieren wie ein normales Input, also anklicken und schreiben?
-
Es soll ja ein Bild oder ein transparentes Input über einem Bild sein.
Das man nur die Zeichen sieht mehr nicht.
Kein Rand und das in der Mitte was auch immer weiß ist soll auch nicht da sein -
[autoit]
GUICtrlCreateLabel("Ich bin ein Label mit transparentem Hintergrund.",20,20)
[/autoit]
GUICtrlSetBkColor(-1,-2) -
Ich will ein INPUT und kein LABEL
-
Wenn du keine eingaben machen möchtest reicht ein Label föllig aus texte und grösse farben etc. kannst du hier auch setzen.
und GUICTRLSetData($dein Label, $deine Daten) geht auch -
so ?
[autoit]
[/autoit][autoit][/autoit][autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>$Form1 = GUICreate("Form1", 625, 443, 192, 124)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
$Input1 = GUICtrlCreateInput("Input1", 80, 96, 265, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY), 0)
GUISetState(@SW_SHOW)While 1
[/autoit][autoit][/autoit][autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit]
WEnd -
Oder so evtl. Damit du was ins Label schreiben kannst, musst du einmal draufklicken, wenn du nix mehr reinschreiben möchtest, einfach irgendwo anders in die GUI klicken.
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]$Last = ""
[/autoit] [autoit][/autoit] [autoit]GUICreate("Test")
[/autoit] [autoit][/autoit] [autoit]
$Input = GUICtrlCreateInput("", 10, 150, 200, 20)
GUICtrlSetState($Input, $GUI_HIDE)
GUICtrlSetState($Input, $GUI_DISABLE)
$Label = GUICtrlCreateLabel("", 10, 150, 200, 15)
GUICtrlSetBkColor($Label, 0xff0000) ; damit man das Label findet
GUICtrlSetCursor($Label, 5)GUISetState()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()If GUICtrlGetState($Input) = 96 And GUICtrlRead($Input) <> $Last Then
[/autoit] [autoit][/autoit] [autoit]
$Last = GUICtrlRead($Input) ; damit es nicht dauernd flackert
GUICtrlSetData($Label, GUICtrlRead($Input))
EndIfSwitch $nMsg
[/autoit]
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_PRIMARYDOWN
$aCursor = GUIGetCursorInfo()
If $aCursor[4] = $Label Then
; MsgBox(0, "Test", "Test")
GUICtrlSetBkColor($Label, 0x00ff00)
GUICtrlSetState($Input, $GUI_ENABLE)
GUICtrlSetState($Input, $GUI_FOCUS)
Else
GUICtrlSetBkColor($Label, 0xff0000)
GUICtrlSetState($Input, $GUI_DISABLE)
EndIf
EndSwitch
WEnd -
Ich will ein INPUT und kein LABEL
Musst ja nicht direkt so brüllen. Wie schauts mit dem hier aus:
[autoit]#include <Array.au3>
[/autoit][autoit][/autoit][autoit]
#include <Misc.au3>
#include <_Transinput.au3>$hGUI = GUICreate("")
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
GUISetBkColor(0x00FF00)
$input = GUICtrlCreateInput("Klick mich an, und schreib los ;)",20,20,300,55)
_TransInput_Create($input,12)GUISetState()
[/autoit][autoit][/autoit][autoit][/autoit]
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $input
ConsoleWrite("input abgesendet" & @CRLF)
EndSwitch
WEndVielleicht mach ich ja noch ne "richtige" UDF draus.