1 (изменено: freeZer0K, 2017-03-21 16:21:53)

Тема: AHK: Часы. Прозрачность с включенным и отключенным фоном

Добрый день всем!

Переписал старый скрипт часов, но есть одна проблема:
в момент регулирования прозрачности часов (это из меню "Другие настройки" в трее) включается их фон, если он отключен. Но самое противное, что при отключении фона и прозрачность часов отключается.

С включенным фоном все работает корректно.

Нужна регулировка прозрачности как при включенном, так и при отключенном фоне часов и желательно с одного Slider.
Посоветуйте решение.

Скрипт часов:


#NoEnv
#Persistent
#SingleInstance force
SendMode Input
DetectHiddenWindows on
SetTitleMatchMode 2

ProgName := "Screen Big Ben"

If !FileExist(A_ScriptDir "\Images\Close.png") {
	FileCreateDir % A_ScriptDir "\Images"
	FileInstall Images\Close.png, % A_ScriptDir "\Images\Close.png", 1
	}
	
CloseImg := A_ScriptDir "\Images\Close.png"

RegRead AutoLaunch, HKCU, Software\Microsoft\Windows\CurrentVersion\Run, % ProgName
RegRead ThroughStatus, HKCU, % "Software\" ProgName, Click Through
RegRead OnTop, HKCU, % "Software\" ProgName, Always OnTop
RegRead LockPos, HKCU, % "Software\" ProgName, Lock Position

RegRead BackStatus, HKCU, % "Software\" ProgName, Show Background
	If ErrorLevel {
		BackStatus := "1"
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Show Background, % BackStatus
		}
		
RegRead DateStatus, HKCU, % "Software\" ProgName, Show Date
	If ErrorLevel {
		DateStatus := "1"
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Show Date, % DateStatus
		}
		
RegRead PosX, HKCU, % "Software\" ProgName, Position-X
	If ErrorLevel {
		PosX := "10"
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Position-X, % PosX
		}
		
RegRead PosY, HKCU, % "Software\" ProgName, Position-Y
	If ErrorLevel {
		PosY := "10"
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Position-Y, % PosY
		}
		
RegRead TimeClr, HKCU, % "Software\" ProgName, Time Color
	If ErrorLevel {
		TimeClr := "00FFFF" ;"00FF00"
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Time Color, % TimeClr
		}
		
RegRead DateClr, HKCU, % "Software\" ProgName, Date Color
	If ErrorLevel {
		DateClr := "00FFFF" ;"00FF00"
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Date Color, % DateClr
		}
		
RegRead BackClr, HKCU, % "Software\" ProgName, Background Color
	If ErrorLevel {
		BackClr := "000000"
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Background Color, % BackClr
		}
		
RegRead TransValue, HKCU, % "Software\" ProgName, Transparency
	If ErrorLevel {
		TransValue := "255"
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Transparency, % TransValue
		}
;______________________________ Clock Gui ______________________________

BackTimeSize := "w416 h80" ; размер фона часов без даты
BackDateSize := "w416 h242" ; размер фона часов с датой
BigBenCorn := "R20-20 0-0" ; размер углов Gui

TimeTxtSize := "w416 h80" ; размер текста часов
DateTxtSize := "w416" ; размер текста даты

TimeTxtPos := "x0 y-10 Center" ; расположение строк часов: 1.начало строки от левого края Gui 2.расстояние между строк
DateTxtPos := "x0 y+10 Center" ; расположение строк даты

TimeFontName := "Cambria" ; название шрифта часов
DateFontName := "Comic Sans MS" ; название шрифта даты

TimeFont := "60 Bold" ; шрифт часов
DateFont := "40 Norm" ; шрифт даты

;GuiLogo := "D:\Storage\The rest\Images\Pictures\Paul.jpg"

Gui BigBen: +LastFound +ToolWindow -Caption
Gui BigBen: Color, % BackClr

Gui BigBen: Font, % "c" TimeClr " s" TimeFont, % TimeFontName
Gui BigBen: Add, Text, % TimeTxtSize " " TimeTxtPos " vTime gMove", % A_Hour " : " A_Min " : " A_Sec

Gui BigBen: Font, % "c" DateClr " s" DateFont, % DateFontName
Gui BigBen: Add, Text, % DateTxtSize " " DateTxtPos " vData", % A_DD " " A_MMMM "`n" A_DDDD

Gui BigBen: Show, % "x" PosX " y" PosY " " BackDateSize, % ProgName
;Gui Add, Picture, % BackDateSize " x-0 y-0", % GuiLogo ; фоновый рисунок Gui
WinSet Region, % BackTimeSize " " BigBenCorn, % ProgName
If (BackStatus = 1) {
	WinSet Transparent, % TransValue, % ProgName
	}
	Else {
		WinSet TransColor, % BackClr " " TransValue, % ProgName
		}
		
SetTimer TicTac, 1000
;______________________________ TrayMenu _______________________________

Menu Tray, Tip, % ProgName
Menu Tray, NoStandard
Menu Tray, Add, Автозапуск с Windows, SwitchAutoLaunch
Menu Tray, Add, Всегда сверху, SetOnTop
Menu Tray, Add, Прозрачность для мыши, ClickThrough
Menu Tray, Add, Не запоминать положение, LockPosition
Menu Tray, Add, Сохранить текущее положение, SavePos
Menu Tray, Add, Дата и день недели, SwitchTimeDate
Menu Tray, Add, Фон часов, SwitchBackground
Menu Tray, Add ; разделитель
Menu Tray, Add, Другие настройки, Config
Menu Tray, Add ; разделитель
Menu Tray, Add, Скрыть/Показать часы, ToggleHide
Menu Tray, Add ; разделитель
Menu Tray, Add, О программе, About
Menu Tray, Add, Выход, CloseProg
Menu Tray, Default, Выход

;______________________ Проверка флагов TrayMenu _______________________

If AutoLaunch {
	Menu Tray, Check, Автозапуск с Windows
	}
	
If LockPos {
	Menu Tray, Check, Не запоминать положение
	}
	
If BackStatus {
	WinSet Transparent, % TransValue, % ProgName
	Menu Tray, Check, Фон часов
	}
	
If DateStatus {
	WinSet Region, % BackDateSize " " BigBenCorn, % ProgName
	Menu Tray, Check, Дата и день недели
	}
	
If ThroughStatus {
	Gui BigBen: +E0x20
	Menu Tray, Check, Прозрачность для мыши
	}
	
If OnTop {
	WinSet AlwaysOnTop, On, % ProgName
	Menu Tray, Check, Всегда сверху
	}
;__________________________ Set transparency ___________________________

#IfWinActive Screen Big Ben
	{
	!Up::
	If (TransValue <= 255) {
		TransValue += 5
		If (TransValue > 255) {
			TransValue = 255
			}
			
		If (BackStatus = 1) {
			WinSet Transparent, % TransValue, % ProgName
			}
			Else {
				WinSet TransColor, % BackClr " " TransValue, % ProgName
				}
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Transparency, % TransValue
		Return
		}
		
	!Down::
	If (TransValue >= 55) {
		TransValue -= 5
		If (TransValue < 55) {
			TransValue = 55
			}
			
		If (BackStatus = 1) {
			WinSet Transparent, % TransValue, % ProgName
			}
			Else {
				WinSet TransColor, % BackClr " " TransValue, % ProgName
				}
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Transparency, % TransValue
		Return
		}
	Return
	}
;_________________________ Enable window drag __________________________

Move:
PostMessage 0xA1, 2,,, A
If (A_GuiEvent = DoubleClick) {
	GoSub ShowHideClock
	}
Return
;________________________________ Clock ________________________________

TicTac:
GuiControl BigBen:, Time, % A_Hour " : " A_Min " : " A_Sec
GuiControl BigBen:, Data, % A_DD " " A_MMMM "`n" A_DDDD
Return
;___________________________ Show/hide clock ___________________________

ShowHideClock:
ToggleHide:
Toggle := !Toggle
If Toggle {
	WinHide % ProgName
	}
	Else {
		WinShow % ProgName
		}
Return
;_________________________ Don't save position _________________________

LockPosition:
If LockPos {
	LockPos := ""
	Menu Tray, UnCheck, Не запоминать положение
	RegWrite REG_SZ, HKCU, % "Software\" ProgName, Lock Position, 0
	}
	Else {
		LockPos := "1"
		Menu Tray, Check, Не запоминать положение
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Lock Position, 1
		GoSub SavePos
		}
Return
;____________________________ Settings Gui _____________________________

Config:
CnfID := "Big Ben Settings"

CnfSize := "w300 h274"
CnfCorn := "R14-14 0-0" ; размер углов Gui
CnfTrans := "220" ; от 0 (невидимо) до 255 (без прозрачности)
CnfClr := "c000000" ; цвет Gui

CnfFontName := "Comic Sans MS" ; название шрифта
CnfFont := "s14 Bold" ; размер шрифта Gui
CnfFontClr := "c00FFFF"

CnfTxtPos := "x40 yp30" ; расположение строк: 1.начало строки от левого края Gui 2.расстояние между строк

CnfPrgrSize := "w30 h30" ; размер Progress (квадрат с цветом элемента)
CnfPrgrPos := "x234 yp0 Border" ; расположение Progress

Gui Cnf: +AlwaysOnTop +ToolWindow -Caption
Gui Cnf: Color, % CnfClr
Gui Cnf: Font, % "s12 Bold " CnfFontClr, % CnfFontName

Gui Cnf: Add, Text, x20 y20 w240 gMove, % ProgName " - Настройки" ; первая строка
Gui Cnf: Add, Picture, x260 yp0 w20 h20 BackgroundTrans gCloseCnf, % CloseImg

Gui Cnf: Font, % CnfFont " " CnfFontClr, % CnfFontName

Gui Cnf: Add, GroupBox, x20 y50 w260 h134 Center, Цвет
Gui Cnf: Add, Text, % CnfTxtPos, Цвет часов
Gui Cnf: Add, Progress, % CnfPrgrSize " " CnfPrgrPos " Background" TimeClr " vTimeClrBtn"

Gui Cnf: Add, Text, % CnfTxtPos, Цвет даты
Gui Cnf: Add, Progress, % CnfPrgrSize " " CnfPrgrPos " Background" DateClr " vDateClrBtn"

Gui Cnf: Add, Text, % CnfTxtPos, Цвет фона
Gui Cnf: Add, Progress, % CnfPrgrSize " " CnfPrgrPos " Background" BackClr " vBackClrBtn"

Gui Cnf: Add, GroupBox, x20 yp52 w260 h59 Center, Прозрачность
Gui Cnf: Add, Slider, x22 yp26 w256 h26 Range15-255 vTransValue gSetTransparency, % TransValue

Gui Cnf: Show, % CnfSize, % CnfID
WinSet Region, % CnfSize " " CnfCorn, % CnfID
WinSet Transparent, % CnfTrans, % CnfID

OnMessage(0x201, "WM_LBUTTONDOWN")
Return

WM_LBUTTONDOWN() {
	If (A_GuiControl = "TimeClrBtn") {
		GoSub TimeClrSet
		}
	Else if (A_GuiControl = "DateClrBtn") {
		GoSub DateClrSet
		}
	Else if (A_GuiControl = "BackClrBtn") {
		GoSub BackClrSet
		}
}

CloseCnf:
Gui Cnf: Destroy
Return
;___________________________ Set clock color ___________________________

TimeClrSet:
TimeClr := ChooseColor()
If TimeClr <>
	{
	RegWrite REG_SZ, HKCU, % "Software\" ProgName, Time Color, % TimeClr
	Gui BigBen: Font, % "c" TimeClr " s" TimeFont, % TimeFontName
	GuiControl BigBen: Font, Time
	GuiControl % "Cnf: +Background" TimeClr , TimeClrBtn
	}
Return
;___________________________ Set date color ____________________________

DateClrSet:
DateClr := ChooseColor()
If DateClr <>
	{
	RegWrite REG_SZ, HKCU, % "Software\" ProgName, Date Color, % DateClr
	Gui BigBen: Font, % "c" DateClr " s" DateFont, % DateFontName
	GuiControl BigBen: Font, Data
	GuiControl % "Cnf: +Background" DateClr , DateClrBtn
	}
Return
;_____________________ Set clock background color ______________________

BackClrSet:
BackClr := ChooseColor()
If BackClr <>
	{
	RegWrite REG_SZ, HKCU, % "Software\" ProgName, Background Color, % BackClr
	Gui BigBen: Color, % BackClr
	GuiControl % "Cnf: +Background" BackClr , BackClrBtn
	}
Return
;__________________________ Set transparency ___________________________

SetTransparency:
If (BackStatus = 1) {
	WinSet Transparent, % TransValue, % ProgName
	}
	Else {
		WinSet TransColor, % BackClr " " TransValue, % ProgName
		}
RegWrite REG_SZ, HKCU, % "Software\" ProgName, Transparency, % TransValue
Return
;___________________________ Set AlwaysOnTop ___________________________

SetOnTop:
If OnTop {
	OnTop := ""
	WinSet AlwaysOnTop, Off, % ProgName
	RegWrite REG_SZ, HKCU, % "Software\" ProgName, Always OnTop, 0
	Menu Tray, UnCheck, Всегда сверху
	}
	Else {
		OnTop := "1"
		WinSet AlwaysOnTop, On, % ProgName
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Always OnTop, 1
		Menu Tray, Check, Всегда сверху
		}
Return
;____________________ Show/hide day of month & week ____________________

SwitchTimeDate:
If DateStatus {
	DateStatus := ""
	WinSet Region, % BackTimeSize " " BigBenCorn, % ProgName
	RegWrite REG_SZ, HKCU, % "Software\" ProgName, Show Date, 0
	Menu Tray, UnCheck, Дата и день недели
	}
	Else {
		DateStatus := "1"
		WinSet Region, % BackDateSize " " BigBenCorn, % ProgName
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Show Date, 1
		Menu Tray, Check, Дата и день недели
		}
Return
;____________________ Show/hide background of clock ____________________

SwitchBackground:
If BackStatus {
	BackStatus := ""
	WinSet TransColor, % BackClr " " TransValue, % ProgName
	RegWrite REG_SZ, HKCU, % "Software\" ProgName, Show Background, 0
	Menu Tray, UnCheck, Фон часов
	}
	Else {
		BackStatus := "1"
		WinSet Transparent, % TransValue, % ProgName
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Show Background, 1
		Menu Tray, Check, Фон часов
		}
Return
;_______________________ AutoLaunch with Windows _______________________

SwitchAutoLaunch:
If AutoLaunch {
	AutoLaunch := ""
	RegDelete HKCU, Software\Microsoft\Windows\CurrentVersion\Run, % ProgName
	Menu Tray, UnCheck, Автозапуск с Windows
	}
	Else {
		AutoLaunch := """" A_ScriptFullPath """"
		RegWrite REG_SZ, HKCU, Software\Microsoft\Windows\CurrentVersion\Run, % ProgName, % AutoLaunch
		Menu Tray, Check, Автозапуск с Windows
		}
Return
;________________________________ Exit _________________________________

CloseProg:
If LockPos <>
	{
	GoSub SavePos
	}
ExitApp
;_________________________ Save clock position _________________________

SavePos:
WinGetPos PosX, PosY,,, % ProgName
RegWrite REG_SZ, HKCU, % "Software\" ProgName, Position-X, % PosX
RegWrite REG_SZ, HKCU, % "Software\" ProgName, Position-Y, % PosY
Return
;_____________________ Click through clock window ______________________

ClickThrough:
ThroughStatus := !ThroughStatus
If ThroughStatus {
	Gui BigBen: +E0x20
	Menu Tray, ToggleCheck, Прозрачность для мыши
	RegWrite REG_SZ, HKCU, % "Software\" ProgName, Click Through, % ThroughStatus
	}
	Else {
		Gui BigBen: -E0x20
		Menu tray, ToggleCheck, Прозрачность для мыши
		RegWrite REG_SZ, HKCU, % "Software\" ProgName, Click Through, % ThroughStatus
		}
Return
;_______________________________________________________________________

ChooseColor(Color = 0x0, hWnd = 0x0, Flags = 0x2) { ; CC_FULLOPEN := 0x2
	VarSetCapacity(CC, 36+64, 0), NumPut(36, CC), NumPut(hWnd, CC, 4), NumPut(Color, CC, 12)
	NumPut(&CC+36, CC, 16), NumPut(Flags, CC, 20), DllCall("comdlg32\ChooseColorA", Str, CC)
	Hex := "123456789ABCDEF0", RGB := &CC+11
	Loop 3 {
		HexColorCode .= SubStr(Hex, (*++RGB >> 4), 1) SubStr(Hex, (*RGB & 15), 1)
		}
Return HexColorCode
}
;________________________________ About ________________________________

About:
MsgBox 0x40, % ProgName, Hotkeys для управления прозрачностью: Alt+Up и Alt+Down`n`nПримечание: необходимо активировать окно часов.`n`nCopyright © 2016 freeZer0K. All rights reserved.
Return

2

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

Непродуманный у вас GUI — часы и их настройки не влезают в отведенные им окна.
Системный маштаб 125%.

3 (изменено: freeZer0K, 2017-02-26 17:56:30)

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

stealzy
1. Часы написаны под разрешение 1920X1080. У меня все влезает.
Если у Вас нет указанных шрифтов, измените.
Для того и вынес все настройки GUI в переменные - для быстрого изменения.
Или подгоняйте размеры с помощью A_ScreenWidth / A_ScreenHeight под любое (в т.ч. и Ваше) разрешение.
Лично у меня пока нет времени под все разрешения подгонять!

2. ВОПРОС-ТО СОБСТВЕННО НЕ О ТОМ!

4

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

freeZer0K пишет:

Часы написаны под разрешение 1920X1080

- улыбнули (;. Мне бы и в голову не пришло писать что-то под конкретное разрешение экрана.
Кстати, у меня как раз 1920X1080, а системный маштаб к разрешению экрана отношения никакого не имеет.

freeZer0K пишет:

Лично у меня пока нет времени под все разрешения подгонять!

Правильно написанное гуи "подгонки" не требует.

5 (изменено: freeZer0K, 2017-02-26 18:43:40)

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

stealzy
Ну напишите "правильно"! Что мешает? - Флаг в руки и барабан на шею!
Обо...рать каждый может, а вот сделать ....
Писал для себя и у меня все работает.

6

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

Вы меня щас спросили, как бы я написал гуи, да?
Ну раз написали для себя только, зачем вы тут выложили весь скрипт, не пойму?
Выложите минимальный рабочий код, воспроизводящий проблему.
"Лично у меня пока нет времени" - неплохо бы и чужое время научиться ценить.

7 (изменено: freeZer0K, 2017-02-26 18:53:45)

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

stealzy
Читайте первый топик - там ответ "для чего"
Выложить кусок кода? ... Сам не пойму причину, потому и выложил все.
Если Вам нужен скрипт - берите и редактируйте под себя. Никто не против.
Только не надо пустой "критики"! Если хотите помочь - напишите решение.

8

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

Ответа для чего не нашел.
Вы вывалили тут свою кучу и просите в ней найти жука. Мало кому захочется ковырятся в вашей кучке.
Если вы хотите получить ответ, стоит выложить только проблемную часть кода - 10-15 строк, этого достаточно.
Лично мне ваш скрипт абсолютно не нужен, просто пытаюсь помочь.

9

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

stealzy пишет:

стоит выложить только проблемную часть кода

Еще раз - сам НЕ ЗНАЮ ГДЕ. Потому и выложил все. Нет желания помогать - не надо было и отвечать.

10 (изменено: Malcev, 2017-02-26 19:37:07)

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

freeZer0K, по поводу подгонки текста в гуи с увеличенным системным масштабом читайте DPIScale в справке по Gui.
По поводу прозрачности - меняйте ее с помощью WinSet, TransColor.
У меня ваши часы мелькают, так как глючат без галочек "enable desktop composition" и "use visual styles on windows and buttons" в Perfomance options. Чтобы этого избежать читайте про BackgroundTrans.

11

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

Malcev пишет:

часы мелькают

Как я могу это исправить, если у меня ничего не мелькает?

меняйте ее с помощью WinSet, TransColor.

А у меня что???

12

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

Как я могу это исправить, если у меня ничего не мелькает?

Вы сможете увидеть это мелькание если уберете выше приведенные галочки, либо поставите классическую тему.

А у меня что???

Странно, что вы у меня это спрашиваете.
Код же вы писали.
У вас  - WinSet Transparent, % TransValue, % ProgName

13

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

Malcev пишет:

% TransValue

- это переменная

14

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

Ну так и используйте ее в WinSet, TransColor.

15 (изменено: freeZer0K, 2017-02-26 19:53:12)

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

Malcev
Дело в том, что прозрачность работает, но только при включенном фоне часов. Если его отключить (фон), прозрачности нет.

16

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

Замените:

WinSet Transparent, % TransValue, % ProgName

На:

WinSet TransColor, % BackClr " " TransValue, % ProgName

17

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

Malcev, спасибо! Попробую. ...
А можно линк на DPIScale? Что-то мне такого не встречалось ...

18

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

freeZer0K, в английской справке есть. На русский не переведено.

19 (изменено: freeZer0K, 2017-02-27 00:35:58)

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

Теперь понял, почему stealzy рвал на себе тельник, доказывая, что GUI "неправильный".
Если бы вник в код, то понял бы, что "обрезка" GUI скрывает дату и день недели, оставляя только текущее время.

Menu Tray, Add, Дата и день недели, SwitchTimeDate

Я пошел по простому пути, не зная других вариантов.

Однако, нужный вопрос так и остался нерешенным ....

20

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

А чем вам мой вариант не подошел?

21 (изменено: freeZer0K, 2017-02-27 21:17:21)

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

Malcev
Почему-то фон часов перестал вообще включаться, хотя без фона прозрачность стала регулироваться.
Здесь, видимо, надо "хитрые" пути искать. Есть подозрения, что все из-за того, что фон и часы (текст) в одном GUI. Вероятно, придется делать 2 отдельных GUI - для часов и для фона ... В выходные буду весь код перекапывать, может что-то найду или придумаю.

22

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

Если хотите чтобы фон оставался посылайте:

WinSet TransColor, % "off " TransValue, % ProgName

23

Re: AHK: Часы. Прозрачность с включенным и отключенным фоном

Было найдено следующие решение:

Заменил строки:

WinSet Transparent, % TransValue, % ProgName

на:

If (BackStatus = 1) {
	WinSet Transparent, % TransValue, % ProgName
	}
	Else {
		WinSet TransColor, % BackClr " " TransValue, % ProgName
		}

Сейчас регулировка прозрачности работает корректно с фоном и без него.
Код часов в первом топе обновил.