Функция GUICtrlSetGraphic

         Описание функции


GUICtrlSetGraphic

Изменяет данные для элемента Graphic.

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

Параметры

controlID Идентификатор элемента возвращаемый функцией GUICtrlCreateGraphic.
type Тип фигуры : точка, линия, кривая Безье, прямоугольник, эллипс, сегмент.
par1...par6 Смотрите ниже Таблицу фигур Graphic.

Возвращаемое значение

Успех:Возвращает 1.
Ошибка:Возвращает 0.
Возвращает -1, в случае неверных данных

Примечания

Координаты фигуры (x,y) устанавливаются относительно координат элемента GUICtrlCreateGraphic. Это может быть вне элемента Graphic, но внутри GUI-окна.

Таблица фигур Graphic
ФигураПараметрыРезультат
$GUI_GR_COLORColor [,BkColor]Цвет для последующих фигур. Когда BkColor равен $GUI_GR_NOBKCOLOR фигура не будет заполнена фоном. Это по умолчанию. По умолчанию линия границ черного цвета.
$GUI_GR_MOVEx,yПереместить текущую позицию без рисования (начало для фигуры Линия).
$GUI_GR_DOTx,yТочка в пиксель, обведённая границами, следующее рисование начинается с предыдущей позиции.
$GUI_GR_PIXELx,yТочка в пиксель, без обводящих границ, следующее рисование начинается с предыдущей позиции.
$GUI_GR_LINEx,yЛиния, использует предыдущие координаты для начала (первое начало из левого верхнего угла или установкой $GUI_GR_MOVE). Позволяет создать многогранник.
$GUI_GR_BEZIERx,y,x1,y1,x2,y2Кривая Безье с 2-мя управляющими точками, использует предыдущие координаты для начала (первое начало из левого верхнего угла или установкой $GUI_GR_MOVE). Позволяет создать фигуру из кривых.
$GUI_GR_RECTx,y,w,hПрямоугольник. Если ширина равна высоте (w=h), то получится квадрат.
$GUI_GR_ELLIPSEx,y,w,hЭллипс (x,y - координаты центра). Если w=h, то получится круг.
$GUI_GR_PIEx,y,r,sa,waСегмент (x,y - координаты центра) r - радиус sa - стартовый угол (отсчёт против часовой стрелки от горизонтального вектора указывающего вправо), wa - угол сегмента. Углы в градусах.
$GUI_GR_CLOSE Окончить текущее рисование. Это необходимо добавить к $GUI_GR_LINE или $GUI_GR_BEZIER, чтобы окончить рисование. Индивидуальное использование игнорируется.
$GUI_GR_REFRESH Обновить элемент Graphic.
$GUI_GR_HINT Отображение управляющих и конечной точек для последующих фигур - Линии и Кривой Безье.
$GUI_GR_PENSIZEnУстановить толщину линии для последующих рисований. Это должно быть установлено до $GUI_GR_COLOR, которые должны учитываться.
$GUI_GR_NOBKCOLOR фиктивно BkColor закрывает рисование отсутствием фона. Только отрисовка линии.

Из-за конструктивных ограничений первыми нужно создать фигуры RECT (прямоугольник), ELLIPSE (эллипс) и PIE (сегмент). Например, LINE (линия) всегда рисуется поверх RECT (прямоугольника). Если важен порядок отображения фигур, тогда рекомендуется создать несколько элементов graphic, вместо одного элемента содержащего все фигуры.

См. также

GUICtrlCreateGraphic

Пример

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

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  ; uncomment to delete starting from last define Graphic control
    ; $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

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

Func CreateChild()
    $child = GUICreate("Мои нарисованные объекты")
    $del = GUICtrlCreateButton("Удалить", 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("текст", 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) ; to display a black border line
    GUICtrlSetBkColor(-1, 0xc0c0ff)
    GUICtrlSetGraphic(-1, $GUI_GR_HINT, 3) ; to display control lines and end points

    GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0, 0xff) ; fill in blue
    GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 120, 20) ; start point
    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) ; start point

    GUISetState()
EndFunc