GUI用のピクチャーコントロールを作成します。
GUICtrlCreatePic ( filename, left, top [, width [, height [, style [, exStyle]]]] )
パラメータ
filename | ロードされる画像のファイル名。BMP、JPG、GIF(アニメーションを除く)をサポートしています。 |
left | コントロールの左端。-1を使用するとGUICoordModeに基づいて左端位置が計算されます。 |
top | コントロールの上端。-1を使用するとGUICoordModeに基づいて上端位置が計算されます。 |
width | [オプション] コントロールの幅(デフォルトは最後に使用された幅)。 |
height | [オプション] コントロールの高さ(デフォルトは最後に使用された高さ)。 |
style | [オプション] コントロールのスタイルを定義。GUIコントロールスタイル付録を参照。 デフォルト (-1) : $SS_NOTIFY 強制適用されるスタイル : $SS_BITMAP |
exStyle | [オプション] コントロールの拡張スタイルを定義。拡張スタイル表を参照。 |
返し値
成功 | 新しく作成したコントロールの識別子(コントロールID)を返します。 |
失敗 | 画像を作成できなかった場合、0を返します。 |
注意
コントロールの情報を設定/変更する方法についてはGUICtrlUpdate...を参照。
関連
GUICoordMode (Option), GUICtrlSetImage, GUICtrlUpdate..., GUIGetMsg
例
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt('MustDeclareVars', 1)
Global $gui, $guiPos, $pic, $picPos
Example1()
Example2()
;----- 例 1 ----
Func Example1()
Local $n, $msg
GUICreate("My GUI picture", 350, 300, -1, -1, $WS_SIZEBOX + $WS_SYSMENU) ; 表示時に中央に表示されるダイアログボックスを作成
GUISetBkColor(0xE0FFFF)
$n = GUICtrlCreatePic("..\GUI\mslogo.jpg", 50, 50, 200, 50)
GUISetState()
; ダイアログが閉じられるまでGUIを実行
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
; コントロールをサイズ変更
$n = GUICtrlSetPos($n, 50, 50, 200, 100)
; ダイアログが閉じられるまでGUIを実行
While 1
$msg = GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
GUIDelete()
EndFunc ;==>example1
;----- 例 2
Func Example2()
Local $msg
$gui = GUICreate("test transparentpic", 200, 100)
$pic = GUICreate("", 68, 71, 10, 20, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $gui)
GUICtrlCreatePic("..\GUI\merlin.gif", 0, 0, 0, 0)
GUISetState(@SW_SHOW, $pic)
GUISetState(@SW_SHOW, $gui)
HotKeySet("{ESC}", "main")
HotKeySet("{LEFT}", "left")
HotKeySet("{RIGHT}", "right")
HotKeySet("{DOWN}", "down")
HotKeySet("{UP}", "up")
$picPos = WinGetPos($pic)
$guiPos = WinGetPos($gui)
Do
$msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSE
EndFunc ;==>Example2
Func main()
$guiPos = WinGetPos($gui)
WinMove($gui, "", $guiPos[0] + 10, $guiPos[1] + 10)
EndFunc ;==>main
Func left()
$picPos = WinGetPos($pic)
WinMove($pic, "", $picPos[0] - 10, $picPos[1])
EndFunc ;==>left
Func right()
$picPos = WinGetPos($pic)
WinMove($pic, "", $picPos[0] + 10, $picPos[1])
EndFunc ;==>right
Func down()
$picPos = WinGetPos($pic)
WinMove($pic, "", $picPos[0], $picPos[1] + 10)
EndFunc ;==>down
Func up()
$picPos = WinGetPos($pic)
WinMove($pic, "", $picPos[0], $picPos[1] - 10)
EndFunc ;==>up
;----- 例 3 PNG処理 by Zedna
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#Include <WinAPI.au3>
Global $hGUI, $hImage, $hGraphic, $hImage1
; GUI作成
$hGUI = GUICreate("Show PNG", 250, 250)
; PNG画像をロード
_GDIPlus_StartUp()
$hImage = _GDIPlus_ImageLoadFromFile("..\GUI\Torus.png")
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
GUISetState()
; ユーザーが終了させるまでループ
do
until GUIGetMsg() = $GUI_EVENT_CLOSE
; リソースをクリーン
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_ShutDown()
; PNG画像を描画
Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
_WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
_WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
Return $GUI_RUNDEFMSG
EndFunc