kodges
Новичок
- Сообщения
- 42
- Репутация
- 0
Здравствуйте. Требуется нарисовать график в одной из вкладок Tab по данным из SQLite (в примере из массива). Решил воспользоваться GraphGDIPlus.au3 и столкнулся с рядом проблем.
1. Как обычно вместо своего Tab график рисуется на всех.
2. Мне нужно чтобы шкала Y рисовалась не слева, а справа от графика.
3. Почему-то у меня цифры в шкале Y идут в разброс... то есть не от меньшего к большему снизу вверх, а хрен пойми как.. меньшее число почему-то стоит в шкале выше большего и т.д..
4. На шкале Y не отображаются отрицательные числа.
5. В идеале надо на один график рисовать несколько линий (ну это в перспективе).
График должен рисоваться накопительным образом, то есть каждое последующее число прибавляется к предыдущему, ну либо отнимается если число отрицательное.
Помогите решить проблемы. Вот то что у меня сейчас получается:
Проблемы 2-4 решил вроде модифицировав немного GraphGDIPlus.au3 файл (прилагаю).
Да и чуть не забыл, при изменении размеров программы размеры графика не меняются. Пробовал использовать GUICtrlSetResizingEx:
к сожалению не работает, как это можно исправить ? ((
Ну помогите мне пожалуйста
1. Как обычно вместо своего Tab график рисуется на всех.
3. Почему-то у меня цифры в шкале Y идут в разброс... то есть не от меньшего к большему снизу вверх, а хрен пойми как.. меньшее число почему-то стоит в шкале выше большего и т.д..
4. На шкале Y не отображаются отрицательные числа.
5. В идеале надо на один график рисовать несколько линий (ну это в перспективе).
График должен рисоваться накопительным образом, то есть каждое последующее число прибавляется к предыдущему, ну либо отнимается если число отрицательное.
Помогите решить проблемы. Вот то что у меня сейчас получается:
Код:
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TabConstants.au3>
#include <GraphGDIPlus.au3>
#include <WinAPI.au3>
#include <Array.au3>
Opt("GUIOnEventMode", 1)
$MainWindow = GUICreate("Example 1", 700, 430)
GUISetOnEvent($GUI_EVENT_CLOSE, "_WindowClose")
GUICtrlCreateTab(1, 1, 690, 330, BitOR($TCS_FIXEDWIDTH, $TCS_BUTTONS, $TCS_FLATBUTTONS))
GUICtrlCreateTabItem("Tab1")
;----- Graph ------
$GraphTab = GUICtrlCreateTabItem("Grafik")
$Graph = _GraphGDIPlus_Create($MainWindow, 10, 30, 600, 360, 0xFF000000, 0xFFFFFEEE)
_GraphGDIPlus_Clear($Graph)
Local $cnt = 0, $max = 0, $min = 0, $cur = 0, $arr[0]
For $i = 0 To 1000
$cnt = $i
$cur += Random( -100000, 100000, 0 )
$min = ($min > $cur) ? $cur : $min
$max = ($max < $cur) ? $cur : $max
_ArrayAdd($arr, $cur)
Next
;----- Set X Y -----
_GraphGDIPlus_Set_RangeX($Graph, 0, $cnt, 10, 1, 0)
_GraphGDIPlus_Set_RangeY($Graph, $min, $max, 10, 1, 0)
;----- Set line color and size -----
_GraphGDIPlus_Set_PenColor($Graph, 0xFF325D87)
_GraphGDIPlus_Set_PenSize($Graph, 2)
;----- Draw line -----
_GraphGDIPlus_Plot_Start($Graph, 0, 0)
For $i = 0 To $cnt - 1
_GraphGDIPlus_Plot_Line($Graph, $i, $arr[$i])
Next
_GraphGDIPlus_Refresh($Graph)
;----- End Graph -----
GUICtrlCreateTabItem("Tab3")
GUISetState()
While 1
Sleep(10)
WEnd
Func _WindowClose()
Exit
EndFunc
Проблемы 2-4 решил вроде модифицировав немного GraphGDIPlus.au3 файл (прилагаю).
Да и чуть не забыл, при изменении размеров программы размеры графика не меняются. Пробовал использовать GUICtrlSetResizingEx:
Код:
_GUICtrlSetResizingEx($Graph, BitOR($GUI_DOCKLEFT, $GUI_DOCKRIGHT, $GUI_DOCKTOP))
к сожалению не работает, как это можно исправить ? ((
Сообщение автоматически объединено:
Ну помогите мне пожалуйста
Вложения
Последнее редактирование: