Function Reference

GUICtrlSetGraphic

コントロールのデータを変更します。

GUICtrlSetGraphic ( controlID, type [, par1 [, ... par6]] )

 

パラメータ

controlID GUICtrlCreateGraphic関数によって返されるコントロール識別子(コントロールID)。
type
描画タイプ:dot、line、bezier、rect、ellipse、pie。
par1...par6 下記グラフィックタイプ表を参照。

 

返し値

成功 1を返します。
失敗 0を返します。
無効なデータの場合、-1を返します。

 

注意

点の位置(x,y)はGUICtrlCreateGraphicの座標に対する相対値です。GUIウィンドウ内であればグラフィックコントロール外を指定することができます。

グラフィックタイプ表
タイプ パラメータ 結果
$GUI_GR_COLOR Color [,BkColor] 次に描画するものの色を定義します。BkColorが $GUI_GR_NOBKCOLORに等しい場合、塗りつぶし描画はおこなわれません。これはデフォルトです。Colorではデフォルトのライン色は黒です。
$GUI_GR_MOVE x,y 現在の位置を描画なしで移動します。
$GUI_GR_DOT x,y 点(指定位置での最小の四角形)を描画します。次の描画は以前の位置から開始されます。
$GUI_GR_PIXEL x,y ピクセルを描画します。次の描画は以前の位置から開始されます。
$GUI_GR_LINE x,y 線を描画します。
$GUI_GR_BEZIER x,y,x1,y1,x2,y2 2つの制御点を使ってベジエ曲線を描画します。
$GUI_GR_RECT x,y,w,h 長方形を描画します。w=hの場合、正方形になります。
$GUI_GR_ELLIPSE x,y,w,h 楕円を描画します。w=hの場合、円になります。
$GUI_GR_PIE x,y,r,sa,wa 扇形を描画します。半径=r 開始角度=sa 描画角度=wa。角度の単位は°です。
$GUI_GR_CLOSE   現在の描画を終了します。$GUI_GR_LINE、$GUI_GR_BEZIERに付加してに使うことで現在の描画を終了します。 単独で使用した場合は無視されます。
$GUI_GR_REFRESH   グラフィックの動的更新後に強制的にリフレッシュさせます。
$GUI_GR_HINT   ベジエ曲線/線の制御点と終点を表示します。
$GUI_GR_PENSIZE n 次の描画に使うペンのサイズを設定します。正しく設定するためには$GUI_GR_COLORの前に定義しなければなりません。
$GUI_GR_NOBKCOLOR   塗りつぶししないで描画を終了させるためのダミーのBkColorです。線の描画時のみ。

設計の制約上、長方形、楕円、扇形は最初に描画されます。例えば直線は常に長方形の上に描画されます。画像の見た目のうえで描画順序が重要な場合は一つのコントロールに全てを描画する代わりに、複数のコントロールを使用することをお勧めします。

 

関連

GUICtrlCreateGraphic

 


#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>

Opt('MustDeclareVars', 1)

Global $MAXGr = 6, $del, $child
Global $a[$MAXGr + 1]   ; 0番目と$MAXGr番目の要素はGUICtrlDeleteの仕様上使うことができない。

Example()

Func Example()
    Local $msg, $inc, $i, $del1

    GUICreate("My Main", -1, -1, 100, 100)
    $del1 = GUICtrlCreateButton("Delete", 50, 200, 50)
    GUISetState()
    CreateChild()

    $i = 1
    $inc = 1
    ;$i=5   ; コメントをはずすと最後に定義したグラフィックコントロールから削除を行う
    ;$inc=-1

    Do
        $msg = GUIGetMsg()
        If $msg = $del1 Then $i = Del($inc)

        If $msg = $del Then
            GUICtrlDelete($a[$i])
            $i = $i + $inc
            If $i < 0 Or $i > $MAXGr Then Exit
        EndIf
    Until $msg = $GUI_EVENT_CLOSE
EndFunc   ;==>Example

Func Del($iInc)
    GUIDelete($child)
    CreateChild()
    If $iInc = -1 Then Return 5
    Return 1
EndFunc   ;==>Del

Func CreateChild()
    $child = GUICreate("My Draw")
    $del = GUICtrlCreateButton("Delete", 50, 165, 50)

    $a[1] = GUICtrlCreateGraphic(20, 50, 100, 100)
    GUICtrlSetBkColor(-1, 0xffffff)
    GUICtrlSetColor(-1, 0)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff0000, 0xff0000)
    GUICtrlSetGraphic(-1, $GUI_GR_PIE, 50, 50, 40, 30, 270)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00ff00, 0xffffff)
    GUICtrlSetGraphic(-1, $GUI_GR_PIE, 58, 50, 40, -60, 90)

    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 100, 100, 50, 80)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00ff00, 0xc0c0ff)
    GUICtrlSetGraphic(-1, $GUI_GR_RECT, 350, 200, 50, 80)
    GUICtrlCreateLabel("label", 65, 100, 30)
    GUICtrlSetColor(-1, 0xff)

    $a[2] = GUICtrlCreateGraphic(220, 10, 100, 100)

    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0, 0xff)
    GUICtrlSetGraphic(-1, $GUI_GR_PIE, 50, 50, 40, 30, 270)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00ff00, 0xffffff)
    GUICtrlSetGraphic(-1, $GUI_GR_PIE, 58, 50, 40, -60, 90)

    $a[3] = GUICtrlCreateGraphic(220, 110, 100, 100)
    GUICtrlSetBkColor(-1, 0xf08080)
    GUICtrlSetColor(-1, 0xff)
    GUICtrlSetGraphic(-1, $GUI_GR_HINT, 1)

    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff00)
    GUICtrlSetGraphic(-1, $GUI_GR_RECT, 50, 50, 80, 80)

    $a[4] = GUICtrlCreateGraphic(20, 200, 80, 80)
    GUICtrlSetBkColor(-1, 0xffffff)
    GUICtrlSetGraphic(-1, $GUI_GR_HINT, 1)

    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 10, 10)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 30, 40)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff00)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 70, 70)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff0000)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 10, 50)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xffff00)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 10, 10)

    $a[5] = GUICtrlCreateGraphic(150, 10, 50, 50)
    GUICtrlSetBkColor(-1, 0xa0ffa0)
    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 20, 20)     ; 開始位置
    ; 各描画での色の切り替えを防ぐため
    ; 点の後に線を描画するのが好ましい
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x0000ff)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, 30, 30)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 20, 40)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xff0000)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, 25, 25)
    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 40, 40)
    GUICtrlSetGraphic(-1, $GUI_GR_DOT, 30, 40)

    $a[6] = GUICtrlCreateGraphic(110, 260, 230, 130)
    GUICtrlSetColor(-1, 0)  ; 黒の枠線を表示
    GUICtrlSetBkColor(-1, 0xc0c0ff)
    GUICtrlSetGraphic(-1, $GUI_GR_HINT, 3)  ; 制御線と終点を表示

    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0, 0xff); 青で塗りつぶし
    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 120, 20)    ; 開始位置
    GUICtrlSetGraphic(-1, $GUI_GR_BEZIER, 120, 100, 200, 20, 200, 100)
    GUICtrlSetGraphic(-1, $GUI_GR_BEZIER + $GUI_GR_CLOSE, 100, 40, 40, 100, 40, 20)
    GUICtrlSetGraphic(-1, $GUI_GR_LINE, 60, 30)     ; 開始位置

    GUISetState()
EndFunc   ;==>CreateChild