找回密码
 加入
搜索
楼主: joint

[图形处理] 这个代码能否转为AU3的?

 火...   [复制链接]
发表于 2017-7-17 18:08:07 | 显示全部楼层
回复 73# yamakawa

代码都一样,就是背景颜色没改变。怪事,
我用的是XP系统,AU3Check (3.3.14.2),是不是跟这个环境有关系?
发表于 2017-7-17 21:26:05 | 显示全部楼层
回复 75# chzj589


    有可能。不过我已经不用xp很久了。。没环境测试
发表于 2017-7-17 23:03:34 | 显示全部楼层
本帖最后由 yamakawa 于 2017-7-18 11:51 编辑

回复 76# chzj589


看错库文件。。。晕死
 楼主| 发表于 2017-7-18 17:52:18 | 显示全部楼层
回复  yamakawa

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


我也是很久不用XP了,2个电脑都是win10,也没法测试。
 楼主| 发表于 2017-7-19 17:47:58 | 显示全部楼层
回复 75# chzj589

怎么样?有什么新的进展吗?   感觉与功能相关的样例都有了呀,看你对界面方面的东西挺熟悉的,再努努力应该可以做出来的吧?
发表于 2017-7-19 18:00:03 | 显示全部楼层
回复 80# joint

ListView进度条背景颜色不能改变,就没意义了
 楼主| 发表于 2017-7-19 18:45:43 | 显示全部楼层
回复  joint

ListView进度条背景颜色不能改变,就没意义了
chzj589 发表于 2017-7-19 18:00


遗憾。有没有可能另外写一个类似进度条的控件呢?本来就是拿进度条来做为比较相似的例子的。
发表于 2017-7-20 01:23:17 | 显示全部楼层
本帖最后由 水木子 于 2017-7-20 01:33 编辑
回复  joint

ListView进度条背景颜色不能改变,就没意义了
chzj589 发表于 2017-7-19 18:00


为什么非要用进度条?



Global $iCtrlCount = 10
Global $iCtrlID
Global $aColour[3] = [0x2BD55E, 0xFBE204, 0xFF6E6E]

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[Random(0, 2, 1)])
        Next
EndFunc

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2017-7-20 09:21:04 | 显示全部楼层
本帖最后由 joint 于 2017-7-20 09:33 编辑
为什么非要用进度条?
水木子 发表于 2017-7-20 01:23


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

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



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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-7-20 10:02:08 | 显示全部楼层
回复 84# joint


    怪俺们脑袋僵硬。。。。
   有水大神这一棒,好像有点思路了。。
   画一连串长宽一样的pic。然后拿pic当画布,在上面画圆,很容易实现楼上想要的那种圆形变化
发表于 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[3] = [0xFF2BD55E, 0xFFFBE204, 0xFFFF6E6E]

        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[Random(0, 2, 1)])
    $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
效果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +100 收起 理由
水木子 + 100 学习了!

查看全部评分

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +100 收起 理由
水木子 + 100 学习了!

查看全部评分

发表于 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[3] = [0x2BD55E, 0xFBE204, 0xFF6E6E]
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[10] = ['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[0]

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[UBound($aItemID) + 1]
                $iItemHeight = $aValue[$z]
                $iItemTop = $iItemTop - $iItemHeight
                
                $aItemID[UBound($aItemID) - 1] = 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[Random(0, UBound($aColour) - 1, 1)])
        Next
Next

GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case -3
                        Exit
                        
                Case $aItemID[0] To $aItemID[UBound($aItemID) - 1]
                        MsgBox(0, 0, $nMsg - $aItemID[0] + 1)
                        
        EndSwitch
WEnd

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 18:53 , Processed in 0.270521 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表