chzj589 发表于 2017-7-17 18:08:07

回复 73# yamakawa

代码都一样,就是背景颜色没改变。怪事,
我用的是XP系统,AU3Check (3.3.14.2),是不是跟这个环境有关系?

yamakawa 发表于 2017-7-17 21:26:05

回复 75# chzj589


    有可能。不过我已经不用xp很久了。。没环境测试

yamakawa 发表于 2017-7-17 23:03:34

本帖最后由 yamakawa 于 2017-7-18 11:51 编辑

回复 76# chzj589


看错库文件。。。晕死

joint 发表于 2017-7-18 17:52:18

回复yamakawa

代码都一样,就是背景颜色没改变。怪事,
我用的是XP系统,AU3Check (3.3.14.2),是不 ...
chzj589 发表于 2017-7-17 18:08 http://www.autoitx.com/images/common/back.gif

我也是很久不用XP了,2个电脑都是win10,也没法测试。

joint 发表于 2017-7-19 17:47:58

回复 75# chzj589

怎么样?有什么新的进展吗?   感觉与功能相关的样例都有了呀,看你对界面方面的东西挺熟悉的,再努努力应该可以做出来的吧?

chzj589 发表于 2017-7-19 18:00:03

回复 80# joint

ListView进度条背景颜色不能改变,就没意义了

joint 发表于 2017-7-19 18:45:43

回复joint

ListView进度条背景颜色不能改变,就没意义了
chzj589 发表于 2017-7-19 18:00 http://www.autoitx.com/images/common/back.gif

遗憾。有没有可能另外写一个类似进度条的控件呢?本来就是拿进度条来做为比较相似的例子的。

水木子 发表于 2017-7-20 01:23:17

本帖最后由 水木子 于 2017-7-20 01:33 编辑

回复joint

ListView进度条背景颜色不能改变,就没意义了
chzj589 发表于 2017-7-19 18:00 http://www.autoitx.com/images/common/back.gif

为什么非要用进度条?



Global $iCtrlCount = 10
Global $iCtrlID
Global $aColour =

GUICreate('', 600, 450)

_Create_Label(80, 100, 10, 20)
_Create_Label(80, 150, 20, 30)
_Create_Label(80, 200, 40, 50)

GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case -3
                        Exit
                       
                Case 3 To $iCtrlID
                        MsgBox(0, '', 'CtrlID' & ' = ' & $nMsg)
        EndSwitch
WEnd

Func _Create_Label($iLeft, $iTop, $iWidth, $iHeight)
        GUICtrlCreateLabel('', $iLeft - 3, $iTop - 3, $iCtrlCount * ($iWidth + 5) + 3 , $iHeight + 6, 0x01 + 0x0200)
        GUICtrlSetBkColor(-1, 0xFFFFFF)
        GUICtrlSetState(-1, 128)
       
        For $i = 0 To $iCtrlCount - 1
                $iCtrlID = GUICtrlCreateLabel('', $iLeft + ($i * ($iWidth + 5)), $iTop, $iWidth, $iHeight, 0x01 + 0x0200)
                GUICtrlSetBkColor(-1, $aColour)
        Next
EndFunc

joint 发表于 2017-7-20 09:21:04

本帖最后由 joint 于 2017-7-20 09:33 编辑

为什么非要用进度条?
水木子 发表于 2017-7-20 01:23 http://www.autoitx.com/images/common/back.gif

感谢大神出手。昨晚那么晚看到大神的帖子非常感动。那时已经眼睛模糊脑袋朦胧了,想回帖却发现打字老出错,只好做罢。

不过,我得先说明一下:进度条这个锅得由我来背。
当初拿进度条来说事,主要是希望能把需求方面具有时间序列特征这件事情说的明白些,为了说明数据是个动态的时间序列,就把进度条的这一特征拿来做比喻了,实际上的数据本身不仅有具有时间序列的特征还有其它维度的特征,比如说颜色、形状、大小等。目前看来这样的比喻实际上不仅是影响到了前面多位朋友们的思路,把问题重定向到了进度条上引起了歧义,而且也弱化了实际需求的另一特征:形状和大小的变化。昨晚水木子大神出手,轻松的解决了让chzj589头疼的颜色变化的问题。但是,不得不说,关于大小和形状变化方面我的说明还是引起了一些歧义和误会,我现在不得不严重怀疑我的语文水平了。实际上我说的大小和形状的变化是在全局变量限制下的大小和形状变化,每一组都受同样的最大值的限制,不能超过设置的最大值,变化是在这个限制下产生的。
以下图的圆形变化为例,大致是这样的:



希望大神和各位朋友再完善一下。再次向各位表示衷心的感谢。

yamakawa 发表于 2017-7-20 10:02:08

回复 84# joint


    {:face (356):}怪俺们脑袋僵硬。。。。
   有水大神这一棒,好像有点思路了。。
   画一连串长宽一样的pic。然后拿pic当画布,在上面画圆,很容易实现楼上想要的那种圆形变化

yamakawa 发表于 2017-7-20 10:54:04

示例code#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1)
        _GDIPlus_Startup()
        Local Const $iWidth = 600, $iHeight = 600, $iBgColor = 0xFFFFFF
    Local $aColour =

        Local $hGUI = GUICreate("GDI+ Example (" & @ScriptName & ")", $iWidth, $iHeight)
        GUISetBkColor($iBgColor, $hGUI)
        GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE")
        GUISetState(@SW_SHOW)
        For $i = 0 To 18
        Local $pic = GUICtrlCreateLabel('',20 + $i * 30,20,30,30)
        GUICtrlSetOnEvent(-1,"click")
        Local $hpic = GUICtrlGetHandle($pic)
        Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hpic)
        _GDIPlus_GraphicsSetSmoothingMode($hGraphics, $GDIP_SMOOTHINGMODE_HIGHQUALITY)
        local $g_hPen = _GDIPlus_PenCreate(0xFF8080FF, 1)
        _GDIPlus_GraphicsDrawLine($hGraphics,0,15,30,15, $g_hPen)
          _GDIPlus_PenDispose($g_hPen)

       
        Local $hBrush = _GDIPlus_BrushCreateSolid($aColour)
    $r = Random(5,15,1)
        _GDIPlus_GraphicsFillEllipse($hGraphics, (30 - 2 * $r) / 2, (30 - 2 * $r) / 2, $r * 2, $r * 2, $hBrush)
                _GDIPlus_BrushDispose($hBrush)
        _GDIPlus_GraphicsDispose($hGraphics)
        Next
       

Do
        Until GUIGetMsg = -3
       

Func click()
        MsgBox(0,"","你点击了第" & @GUI_CtrlId -2 & "个色块")
EndFunc;==>click

Func CLOSE()
                                        _GDIPlus_Shutdown()
                      GUIDelete($hGUI)
                                        Exit
EndFunc   ;==>CLOSE效果

chzj589 发表于 2017-7-20 11:03:50

回复 84# joint
昨天说:
ListView进度条背景颜色不能改变,就没意义了。
因为试了一下,鼠标点击ListView进度条没反应,这样就不能获取数据的显示了。
睡觉前想了想,应该用试试:
1:GUICtrlCreateButton按钮控件,按钮控件也可以显示进度条。
2:GUICtrlCreateLabel静态标记控件,控件可设置背景颜色。
早上己看到<水大>的例子,这样就又可继续下去了。
请问一下,是用什么数据源?

yamakawa 发表于 2017-7-20 11:56:19

本帖最后由 yamakawa 于 2017-7-20 11:59 编辑

修改一下#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1)
        _GDIPlus_Startup()
        Local Const $iWidth = 600, $iHeight = 600, $iBgColor = 0xFFFFFF

        Local $hGUI = GUICreate("点击色块可改变大小,颜色", $iWidth, $iHeight)
        GUISetBkColor($iBgColor, $hGUI)
        GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE")
        GUISetState(@SW_SHOW)
        For $i = 0 To 18
        Local $color = "0x" & 'FF' & Hex(Random(0,255,1),2) & Hex(Random(0,255,1),2) & Hex(Random(0,255,1),2)       
        Local $pic = GUICtrlCreateLabel('',20 + $i * 30,20,30,30)
        GUICtrlSetOnEvent(-1,"click")
        Local $hpic = GUICtrlGetHandle($pic)
        Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hpic)
        _GDIPlus_GraphicsSetSmoothingMode($hGraphics, $GDIP_SMOOTHINGMODE_HIGHQUALITY)
        local $g_hPen = _GDIPlus_PenCreate(0xFF8080FF, 1)
        _GDIPlus_GraphicsDrawLine($hGraphics,0,15,30,15, $g_hPen)
        _GDIPlus_PenDispose($g_hPen)
        Local $hBrush = _GDIPlus_BrushCreateSolid($color)
    Local $r = Random(5,15,1)
        _GDIPlus_GraphicsFillEllipse($hGraphics, (30 - 2 * $r) / 2, (30 - 2 * $r) / 2, $r * 2, $r * 2, $hBrush)
        _GDIPlus_BrushDispose($hBrush)
        _GDIPlus_GraphicsDispose($hGraphics)
        Next
                Local $lbl = GUICtrlCreateLabel('',20,400,500,120)

Do
        Until GUIGetMsg = -3
       

Func click()
    Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND(@GUI_CtrlHandle)
        _GDIPlus_GraphicsClear($hGraphics,0xFFFFFFFF)
        Local $g_hPen = _GDIPlus_PenCreate(0xFF8080FF, 1)
        _GDIPlus_GraphicsDrawLine($hGraphics,0,15,30,15, $g_hPen)
        _GDIPlus_PenDispose($g_hPen)
    Local $color = "0x" & 'FF' & Hex(Random(0,255,1),2) & Hex(Random(0,255,1),2) & Hex(Random(0,255,1),2)       
        Local $hBrush = _GDIPlus_BrushCreateSolid($color)
        Local $r = Random(5,15,1)
        _GDIPlus_GraphicsFillEllipse($hGraphics, (30 - 2 * $r) / 2, (30 - 2 * $r) / 2, $r * 2, $r * 2, $hBrush)
        _GDIPlus_BrushDispose($hBrush)
        _GDIPlus_GraphicsDispose($hGraphics)
               GUICtrlSetData($lbl,"你点击了第" & @GUI_CtrlId -2 & "个色块" & @CRLF & "句柄为 :" & @GUI_CtrlHandle & @CRLF &"新的颜色为 " & $color & @CRLF & "新的半径为 " & $r)
EndFunc;==>click

Func CLOSE()
        _GDIPlus_Shutdown()
        GUIDelete($hGUI)
        exit
EndFunc   ;==>CLOSE

水木子 发表于 2017-7-20 14:46:56

回复 87# chzj589

水木子 发表于 2017-7-20 21:49:54

本帖最后由 水木子 于 2017-7-20 22:04 编辑


#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $iLineTop = 500, $iLineWidth = 700
;~ Global $aColour =
Global $iColour = '0x' & Hex(Random(0, 255, 1), 2) & Hex(Random(0, 255, 1), 2) & Hex(Random(0, 255, 1), 2)
Global $iItemWidth = 30, $iItemHeight
Global $iSizing = 100
Global $iX = 20

Global $aItem = ['50,80,140', '70,80,100', '40,120', '110,130,50,70', '100,50,100,70,80', '150', '130,80', '90,70,70', '20,80,80', '120,30,40']
Global $aItemID

GUICreate('', 800, 600)

$Graphic1 = GUICtrlCreateGraphic(20, 20, 760, 560)
GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 50, 20)
GUICtrlSetGraphic(-1, $GUI_GR_LINE, 50, $iLineTop)
GUICtrlSetGraphic(-1, $GUI_GR_MOVE, 50, $iLineTop)
GUICtrlSetGraphic(-1, $GUI_GR_LINE, $iLineWidth, $iLineTop)
GUICtrlSetBkColor(-1, 0xFFFFFF)
GUICtrlSetState(-1, 128)

For $i = 0 To 4
        GUICtrlCreateLabel($i * 100 & '-', 30, (510 - $i * 100), 40, 20, 0x0002 + 0x0200)
        GUICtrlSetFont(-1, 12, 400)
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Next

For $i = 0 To UBound($aItem) - 1
        $aValue = StringSplit($aItem[$i], ',', 2)
        $iItemTop = $iLineTop + 20
       
        For $z = 0 To UBound($aValue) - 1
                ReDim $aItemID
                $iItemHeight = $aValue[$z]
                $iItemTop = $iItemTop - $iItemHeight
               
                $aItemID = GUICtrlCreateLabel('', 120 + ($i * ($iItemWidth + $iX)), $iItemTop, $iItemWidth, $iItemHeight, 0x01 + 0x0200)
               
                GUICtrlSetBkColor(-1, '0x' & Hex(Random(0, 255, 1), 2) & Hex(Random(0, 255, 1), 2) & Hex(Random(0, 255, 1), 2))
;~                 GUICtrlSetBkColor(-1, $aColour)
        Next
Next

GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case -3
                        Exit
                       
                Case $aItemID To $aItemID
                        MsgBox(0, 0, $nMsg - $aItemID + 1)
                       
        EndSwitch
WEnd
页: 1 2 3 4 5 [6] 7 8 9 10 11
查看完整版本: 这个代码能否转为AU3的?