BORIS09087
Новичок
- Сообщения
- 20
- Репутация
- 0
Всем здравствуйте. Понадобилось пересчитать координаты для для другого разрешения экрана. написал скриптик, всё работает, но...
Координаты пересчитываются дробно. Как сделать правильно? Округлять или нужна другая формула? Подскажите...
Сейчас перепроверил, пересчитывает неправильно(. Есть формула для пкресчёта?
Координаты пересчитываются дробно. Как сделать правильно? Округлять или нужна другая формула? Подскажите...
Код:
#include <GUIConstantsEx.au3>
#include <GUIComboBox.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
Local $BaseW, $BaseH, $BaseX, $BaseY, $Combo1, $Bas1, $Bas2
$hGUI = GUICreate("РАСЧЁТ", 220, 280, 100, 200, $WS_OVERLAPPEDWINDOW + $WS_POPUP)
GUISetBkColor(0x90EE90)
GUISetFont(10, 800, 0, "Arial Bold")
$Label1 = GUICtrlCreateLabel("ВЫБРАТЬ РАЗРЕШЕНИЕ ЭКРАНА", 20, 10, 260, 10)
GUICtrlSetFont(-1, 8, 600, 0, "Arial")
$Combo1 = GUICtrlCreateCombo ("", 20, 30, 180, 22)
GUICtrlSetData (-1, "1680х1050|1600х900|1280х1024")
$Label2 = GUICtrlCreateLabel("ВВЕСТИ КООРДИНАТУ Х", 20, 60, 260, 10)
GUICtrlSetFont(-1, 8, 600, 0, "Arial")
$Input1 = GUICtrlCreateInput("", 20, 80, 80, 22)
GUICtrlSetBkColor(-1, 0xF0E68C)
$Label3 = GUICtrlCreateLabel("ВВЕСТИ КООРДИНАТУ Y", 20, 110, 300, 10)
GUICtrlSetFont(-1, 8, 600, 0, "Arial")
$Input2 = GUICtrlCreateInput("", 20, 130, 80, 22)
GUICtrlSetBkColor(-1, 0xF0E68C)
$Button_1 = GUICtrlCreateButton("РАСЧИТАТЬ", 20, 160, 180, 22)
$Label4 = GUICtrlCreateLabel("РЕЗУЛЬТАТЫ РАСЧЁТА", 20, 190, 300, 10)
GUICtrlSetFont(-1, 8, 600, 0, "Arial")
$Input3 = GUICtrlCreateInput("", 20, 210, 80, 22)
GUICtrlSetBkColor(-1, 0xF0E68C)
$Input4 = GUICtrlCreateInput("", 20, 240, 80, 22)
GUICtrlSetBkColor(-1, 0xF0E68C)
GUISetState()
;-----------------------------------------------------------------------------------------------------
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Combo1
Switch GUICtrlRead($Combo1)
Case "1680х1050"
Beep(2000,100)
$Bas1 = 1680
$Bas2 = 1050
Case "1600х900"
Beep(2000,100)
$Bas1 = 1600
$Bas2 = 900
Case "1280х1024"
Beep(2000,100)
$Bas1 = 1280
$Bas2 = 1024
EndSwitch
Case $Button_1
Beep(1000,100)
$BaseW = $Bas1
$BaseH = $Bas2
$BaseX = GUICtrlRead($Input1)
$BaseY = GUICtrlRead($Input2)
$CalcX = @DesktopWidth / $BaseW * $BaseX
$CalcY = @DesktopHeight / $BaseH * $BaseY
ControlSetText("РАСЧЁТ", "", $input3, $CalcX)
ControlSetText("РАСЧЁТ", "", $input4, $CalcY)
EndSwitch
WEnd
Сейчас перепроверил, пересчитывает неправильно(. Есть формула для пкресчёта?
Последнее редактирование: