AutoIt: 3.3.14.3
Версия: 1.0
Категория: Приколы, Элементы GUI, Разное
Описание:
Часы с развёрткой всех "светодиодов" в цикле из одной GUICtrlCreateGraphic.
Изменение размеров "светодиодов". вычисление всех цветов из базового, изменение количества полей.
Удобное редактирование шрифта отображения знаков.
Через некоторое время работы подвисают. Созданы в качестве "Привет Мир"
Воодушевлялся старыми Электроника 7
Код:
Автор(ы): angro
Версия: 1.0
Категория: Приколы, Элементы GUI, Разное
Описание:
Часы с развёрткой всех "светодиодов" в цикле из одной GUICtrlCreateGraphic.
Изменение размеров "светодиодов". вычисление всех цветов из базового, изменение количества полей.
Удобное редактирование шрифта отображения знаков.
Через некоторое время работы подвисают. Созданы в качестве "Привет Мир"
Воодушевлялся старыми Электроника 7
Код:
Код:
;#NoTrayIcon
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <StaticConstants.au3>
#include <FontConstants.au3>
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
Sleep(333)
Electronica7()
WEnd
; #FUNCTION# ====================================================================================================================
; Author ........: angro
; url.......: https://youtu.be/thA-B9O_y8I
; ===============================================================================================================================
Func Electronica7($Size = 15, $Field = 6, $BgColor = 0x000000, $LedColor = 0x00D9E5)
Local Static $GUI, $Led, $HSBArr, $MatrixColor[3][$Size + 1]
Local Static $MatrixChange[7][13][8], $BuildColor[3], $FlagStart = True
If $FlagStart Then
$GUI = GUICreate('Electronica7', ((($Size * 7) * 3) * $Field), (($Size * 11) * 3), Default, Default, $WS_POPUP, BitOR($WS_EX_CONTROLPARENT, $WS_EX_COMPOSITED))
$Led = GUICtrlCreateGraphic(0, 0)
GUISetBkColor($BgColor, $GUI)
GUISetState(@SW_SHOWNORMAL, $GUI)
For $TeakF = 1 To $Field
$MatrixChange[$TeakF][0][1] = 'F'
$MatrixChange[$TeakF][0][2] = 'F'
Next
$HSBArr = _RGB2HSB(_ColorGetRGB($LedColor))
For $NumColor = $Size To 1 Step -1
;disabled
$Saturation = $HSBArr[1]
$Brightness = (100 / ($NumColor / 1.1))
If $Saturation > 80 Then $Saturation = 80
If $Brightness > 80 Then $Brightness = 80
$BuildColor[0] = $HSBArr[0]
$BuildColor[1] = $Saturation
$BuildColor[2] = $Brightness
$RGBArr = _HSB2RGB($BuildColor)
$MatrixColor[1][$NumColor] = '0x' & StringFormat('%02X%02X%02X', $RGBArr[0], $RGBArr[1], $RGBArr[2])
;enabled
$Saturation = $HSBArr[1] + 10
$Brightness = (100 / $NumColor) + 80
If $Saturation > 100 Then $Saturation = 100
If $Brightness > 100 Then $Brightness = 100
$BuildColor[0] = $HSBArr[0]
$BuildColor[1] = $Saturation
$BuildColor[2] = $Brightness
$RGBArr = _HSB2RGB($BuildColor)
$MatrixColor[2][$NumColor] = '0x' & StringFormat('%02X%02X%02X', $RGBArr[0], $RGBArr[1], $RGBArr[2])
Next
For $TeakF = 1 To $Field
For $TeakY = 1 To 12
For $TeakX = 1 To 7
$ShiftX = (($Size * 2 + ($Size / 10 + 2)) * $TeakX) + ((($Size * 7) * 3) * ($TeakF - 1))
$ShiftY = ($Size * 2 + ($Size / 10 + 2)) * $TeakY
GUICtrlSetGraphic($Led, $GUI_GR_COLOR, $BgColor, $BgColor)
For $CalcSize = $Size To 1 Step -1
GUICtrlSetGraphic($Led, $GUI_GR_COLOR, $MatrixColor[1][$CalcSize], $MatrixColor[1][$CalcSize])
GUICtrlSetGraphic($Led, $GUI_GR_PIE, $ShiftX, $ShiftY, $CalcSize, 270, 360)
Next
Next
Next
Next
$FlagStart = False
EndIf
#Region Font
; y |, x -
Local Static $Sign0[13][8] = [[0,0,0,0,0,0,0,0], _
[0,0,1,1,1,1,1,0], _
[0,1,1,1,1,1,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,1,1,1,1,1], _
[0,0,1,1,1,1,1,0]]
; ??
Local Static $Sign1[13][8] = [[0,0,0,0,0,0,0,0], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,1,1,1], _
[0,0,0,0,1,1,1,1], _
[0,0,0,1,1,0,1,1], _
[0,0,0,1,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1]]
Local Static $Sign2[13][8] = [[0,0,0,0,0,0,0,0], _
[0,0,1,1,1,1,1,0], _
[0,1,1,1,1,1,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,1,1,1,1,1,1], _
[0,1,1,1,1,1,1,0], _
[0,1,1,0,0,0,0,0], _
[0,1,1,0,0,0,0,0], _
[0,1,1,0,0,0,0,0], _
[0,1,1,1,1,1,1,1], _
[0,0,1,1,1,1,1,0]]
Local Static $Sign3[13][8] = [[0,0,0,0,0,0,0,0], _
[0,0,1,1,1,1,1,0], _
[0,1,1,1,1,1,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,1,1,1,1,1], _
[0,0,0,1,1,1,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,1,1,1,1,1,1,1], _
[0,0,1,1,1,1,1,0]]
; ??
Local Static $Sign4[13][8] = [[0,0,0,0,0,0,0,0], _
[0,0,1,0,0,0,1,0], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,1,1,1,1,1], _
[0,0,1,1,1,1,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1]]
Local Static $Sign5[13][8] = [[0,0,0,0,0,0,0,0], _
[0,0,1,1,1,1,1,0], _
[0,1,1,1,1,1,1,1], _
[0,1,1,0,0,0,0,0], _
[0,1,1,0,0,0,0,0], _
[0,1,1,0,0,0,0,0], _
[0,1,1,1,1,1,1,0], _
[0,0,1,1,1,1,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,1,1,1,1,1,1,1], _
[0,0,1,1,1,1,1,0]]
Local Static $Sign6[13][8] = [[0,0,0,0,0,0,0,0], _
[0,0,1,1,1,1,1,0], _
[0,1,1,1,1,1,1,1], _
[0,1,1,0,0,0,0,0], _
[0,1,1,0,0,0,0,0], _
[0,1,1,0,0,0,0,0], _
[0,1,1,1,1,1,1,0], _
[0,1,1,1,1,1,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,1,1,1,1,1], _
[0,0,1,1,1,1,1,0]]
; ??
Local Static $Sign7[13][8] = [[0,0,0,0,0,0,0,0], _
[0,1,1,1,1,1,1,0], _
[0,0,1,1,1,1,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1]]
Local Static $Sign8[13][8] = [[0,0,0,0,0,0,0,0], _
[0,0,1,1,1,1,1,0], _
[0,1,1,1,1,1,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,1,1,1,1,1], _
[0,1,1,1,1,1,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,1,1,1,1,1], _
[0,0,1,1,1,1,1,0]]
Local Static $Sign9[13][8] = [[0,0,0,0,0,0,0,0], _
[0,0,1,1,1,1,1,0], _
[0,1,1,1,1,1,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,0,0,0,1,1], _
[0,1,1,1,1,1,1,1], _
[0,0,1,1,1,1,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,0,0,0,0,0,1,1], _
[0,1,1,1,1,1,1,1], _
[0,0,1,1,1,1,1,0]]
Local Static $SignF[13][8] = [[0,0,0,0,0,0,0,0], _
[0,0,0,0,0,0,0,0], _
[0,0,0,0,0,0,0,0], _
[0,0,0,0,0,0,0,0], _
[0,0,0,0,0,0,0,0], _
[0,0,0,0,0,0,0,0], _
[0,0,0,0,0,0,0,0], _
[0,0,0,0,0,0,0,0], _
[0,0,0,0,0,0,0,0], _
[0,0,0,0,0,0,0,0], _
[0,0,0,0,0,0,0,0], _
[0,0,0,0,0,0,0,0], _
[0,0,0,0,0,0,0,0]]
#EndRegion Font
For $TeakF = 1 To $Field
For $TeakY = 1 To 12
For $TeakX = 1 To 7
$MatrixChange[$TeakF][$TeakY][$TeakX] = Null
Next
Next
Next
For $TeakF = 1 To $Field
If $MatrixChange[$TeakF][0][1] <> $MatrixChange[$TeakF][0][2] Then
For $TeakY = 1 To 12
For $TeakX = 1 To 7
If Eval('Sign' & $MatrixChange[$TeakF][0][1])[$TeakY][$TeakX] = 1 And Eval('Sign' & $MatrixChange[$TeakF][0][2])[$TeakY][$TeakX] = 0 Then $MatrixChange[$TeakF][$TeakY][$TeakX] = 1
If Eval('Sign' & $MatrixChange[$TeakF][0][1])[$TeakY][$TeakX] = 0 And Eval('Sign' & $MatrixChange[$TeakF][0][2])[$TeakY][$TeakX] = 1 Then $MatrixChange[$TeakF][$TeakY][$TeakX] = 0
If Eval('Sign' & $MatrixChange[$TeakF][0][1])[$TeakY][$TeakX] = 1 And $MatrixChange[$TeakF][$TeakY][$TeakX] = Null Then $MatrixChange[$TeakF][$TeakY][$TeakX] = 1
Next
Next
$MatrixChange[$TeakF][0][2] = $MatrixChange[$TeakF][0][1]
EndIf
Next
For $TeakF = 1 To $Field
For $TeakY = 1 To 12
For $TeakX = 1 To 7
$ShiftX = (($Size * 2 + ($Size / 10 + 2)) * $TeakX) + ((($Size * 7) * 3) * ($TeakF - 1))
$ShiftY = ($Size * 2 + ($Size / 10 + 2)) * $TeakY
For $CalcSize = $Size To 1 Step -1
;disabled
If $MatrixChange[$TeakF][$TeakY][$TeakX] = 0 Then
GUICtrlSetGraphic($Led, $GUI_GR_COLOR, $MatrixColor[1][$CalcSize], $MatrixColor[1][$CalcSize])
GUICtrlSetGraphic($Led, $GUI_GR_PIE, $ShiftX, $ShiftY, $CalcSize, 270, 360)
EndIf
;enabled
If $MatrixChange[$TeakF][$TeakY][$TeakX] = 1 Then
GUICtrlSetGraphic($Led, $GUI_GR_COLOR, $MatrixColor[2][$CalcSize], $MatrixColor[2][$CalcSize])
GUICtrlSetGraphic($Led, $GUI_GR_PIE, $ShiftX, $ShiftY, $CalcSize, 270, 360)
EndIf
Next
Next
Next
Next
GUICtrlSetGraphic($Led, $GUI_GR_REFRESH)
; Author ........: SadBunny
$MatrixChange[1][0][1] = Int(@HOUR / 10)
$MatrixChange[2][0][1] = Mod(@HOUR, 10)
$MatrixChange[3][0][1] = Int(@MIN / 10)
$MatrixChange[4][0][1] = Mod(@MIN, 10)
$MatrixChange[5][0][1] = Int(@SEC / 10)
$MatrixChange[6][0][1] = Mod(@SEC, 10)
EndFunc
; #FUNCTION# ====================================================================================================================
; Author ........: jpm
; Modified.......:
; ===============================================================================================================================
Func _ColorGetRGB($iColor, Const $_iCurrentExtended = @extended)
If BitAND($iColor, 0xFF000000) Then Return SetError(1, 0, 0) ; invalid color value
Local $aColor[3]
$aColor[0] = BitAND(BitShift($iColor, 16), 0xFF)
$aColor[1] = BitAND(BitShift($iColor, 8), 0xFF)
$aColor[2] = BitAND($iColor, 0xFF)
Return SetExtended($_iCurrentExtended, $aColor)
EndFunc ;==>_ColorGetRGB
; #FUNCTION# ====================================================================================================================
; Author ........: Yashied
; Modified.......:
; ===============================================================================================================================
Func _RGB2HSB($aRGB)
Local $Min = 255, $Max = 0
Local $HSB[3], $D, $H
For $i = 0 To 2
If $aRGB[$i] > $Max Then
$Max = $aRGB[$i]
EndIf
If $aRGB[$i] < $Min Then
$Min = $aRGB[$i]
EndIf
Next
If $Min = $Max Then
$HSB[0] = 0
$HSB[1] = 0
$HSB[2] = $Max / 255
Else
If $aRGB[0] = $Min Then
$D = $aRGB[1] - $aRGB[2]
$H = 3
Else
If $aRGB[1] = $Min Then
$D = $aRGB[2] - $aRGB[0]
$H = 5
Else
$D = $aRGB[0] - $aRGB[1]
$H = 1
EndIf
EndIf
$HSB[0] = ($H - ($D / ($Max - $Min))) / 6
$HSB[1] = ($Max - $Min) / $Max
$HSB[2] = $Max / 255
EndIf
$HSB[0] = Round($HSB[0] * 360)
If $HSB[0] = 360 Then
$HSB[0] = 0
EndIf
For $i = 1 To 2
$HSB[$i] = Round($HSB[$i] * 100)
Next
Return $HSB
EndFunc ;==>_RGB2HSB
; #FUNCTION# ====================================================================================================================
; Author ........: Yashied
; Modified.......:
; ===============================================================================================================================
Func _HSB2RGB($aHSB)
Local $RGB[3], $H, $L, $F, $P, $Q, $T
For $i = 1 To 2
$aHSB[$i] /= 100
Next
If $aHSB[1] = 0 Then
For $i= 0 To 2
$RGB[$i] = $aHSB[2]
Next
Else
$H = $aHSB[0] / 60
$L = Floor($H)
$F = $H - $L
$P = $aHSB[2] * (1 - $aHSB[1])
$Q = $aHSB[2] * (1 - $aHSB[1] * $F)
$T = $aHSB[2] * (1 - $aHSB[1] * (1 - $F))
Switch $L
Case 1
$RGB[0] = $Q
$RGB[1] = $aHSB[2]
$RGB[2] = $P
Case 2
$RGB[0] = $P
$RGB[1] = $aHSB[2]
$RGB[2] = $T
Case 3
$RGB[0] = $P
$RGB[1] = $Q
$RGB[2] = $aHSB[2]
Case 4
$RGB[0] = $T
$RGB[1] = $P
$RGB[2] = $aHSB[2]
Case 5
$RGB[0] = $aHSB[2]
$RGB[1] = $P
$RGB[2] = $Q
Case Else
$RGB[0] = $aHSB[2]
$RGB[1] = $T
$RGB[2] = $P
EndSwitch
EndIf
For $i = 0 To 2
$RGB[$i] = Round($RGB[$i] * 255)
Next
Return $RGB
EndFunc ;==>_HSB2RGB
Автор(ы): angro