Что нового

Наслоение шрифта в checkbox

paa13

Новичок
Сообщения
44
Репутация
1
Вот в таком коде, где надо убирать фон с checkbox, если несколько раз отметить и снять галочку на любом checkbox, то происходит странное наложение(увеличение) шрифта

Код:
#include <GUIConstants.au3>
$hMain=GUICreate('',400,300)
Dim $Checkbox[5]
For $i = 0 To 4
  $Checkbox[$i] = GUICtrlCreateCheckbox("Text", 10, 13 + $i * 20, 115, 13)
Next
For $i = 0 To 4
  GUICtrlSetBkColor($Checkbox[$i], $GUI_BKCOLOR_TRANSPARENT)
Next
GUISetState(@SW_SHOW,$hMain)
While 1
$msg = GUIGetMsg()
    Select
         Case $msg= $GUI_EVENT_CLOSE
             Exit
    EndSelect
WEnd
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
На версии AutoIt 3.3.14.2 ничего подобного не происходит.
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
paa13, это зависит от темы. С Aero таких проблем нет
 
A

Alofa

Гость
paa13, Tempo, joiner
Remarks
Only Button, Label, Checkbox, Group, Radio, Edit, Input, List, Listview, ListviewItem, Treeview, TreeviewItem, Graphic, Progress, Slider and Combo controls can currently be colored.

Progress controls cannot be painted if the "Windows XP style" is used.
Checkbox, Radio, Group Progress, Combo controls cannot be painted if the "Windows XP/Vista style" is used.

paa13 в классическом стиле и так фон Checkbox-ов прозрачный (по крайней мере у меня так).
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Alofa
это работает только при отсутствии элементов "под" чекбоксом.
я спросил про стиль, дающий прозрачность элементу. во всяком случае в версии 3.3.12.0 он для чеков и радио не работает
 
Автор
P

paa13

Новичок
Сообщения
44
Репутация
1
Спасибо за ответы! Но я так и не понял как исправить эту проблему, пока тока вариант окрашивать под цвет gui, но и тут проблема gui имеет разный цвет (я так понимаю от разных стилей или самих операционок)
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
paa13 [?]
как исправить эту проблему
Так попробуйте
Код:
#include <WinAPI.au3>
...
While 1
  Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
      Exit
    Case $Checkbox[0] To $Checkbox[4]
      _WinAPI_InvalidateRect($hMain)
  EndSwitch
WEnd
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
paa13 [?]
gui имеет разный цвет (я так понимаю от разных стилей или самих операционок)

Если вы не собираетесь менять цвет окна сами или ставить Chekbox поверх других элементов прозрачность вам не нужна

Но если собираетесь можете для текста попробовать использовать отдельные Label элементы
Код:
#include <GUIConstants.au3>
#include <StaticConstants.au3>

Local $aCheckbox[15] = [14], $iY = 10
GUICreate("Пример")
GUISetBkColor(0xC1F1E1)
For $i = 1 To $aCheckbox[0]
	$aCheckbox[$i] = _GUICtrlCheckboxTransparent_Create("Test " & $i, 10, $iY)
	$iY += 30
Next
GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Func _GUICtrlCheckboxTransparent_Create($sText, $iX, $iY, $iW = -1, $iH = -1, $iStyle = -1, $iExStyle = -1)
	Local $iCheckbox, $iOpt, $iLabel
	$iCheckbox = GUICtrlCreateCheckbox($sText, $iX, $iY, $iW, $iH, $iStyle, $iExStyle)
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
	GUICtrlSetData(-1, "")
	If $iW Then $iW -= 20
	$iOpt = Opt("GUICoordMode", 1)
	$iLabel = GUICtrlCreateLabel($sText, $iX + 20, $iY, $iW, $iH, BitOR($SS_LEFT, $SS_CENTERIMAGE))
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
	Opt("GUICoordMode", $iOpt)
	Return SetExtended($iLabel, $iCheckbox)
EndFunc   ;==>_GUICtrlCheckboxTransparent_Create
 
Верх