smooth 发表于 2015-3-6 22:06:21

请教如何在GUI上画一条水平的横线?[已解决]

本帖最后由 smooth 于 2015-3-10 19:43 编辑

请教如何在GUI上画一条水平的横线?同理,竖线又如何画?谢谢!

lpxx 发表于 2015-3-6 22:33:18

我一般是画个Lable标签高度为1,设置颜色。

smooth 发表于 2015-3-6 23:06:55

本帖最后由 smooth 于 2015-3-6 23:07 编辑

我一般是画个Lable标签高度为1,设置颜色。
lpxx 发表于 2015-3-6 22:33 http://www.autoitx.com/images/common/back.gif


    这不失为一种方法。但竖线就没法这样搞了。

netegg 发表于 2015-3-7 04:25:49

本帖最后由 netegg 于 2015-3-7 04:43 编辑

#include <WindowsConstants.au3>
#include <WinAPI.au3>

local $gui = GUICreate('mygui', 200, 200)
GUISetState()
ShowCross(100, 100, 20, 1, 0xFF);, 3000)

Do
        Sleep(100)
UntilGUIGetMsg() =-3
exit
Func ShowCross($start_x, $start_y, $length, $width, $color)
    Local $hDC, $hPen, $obj_orig

    $hDC = _WinAPI_GetWindowDC($gui) ; 全部屏幕的场景(桌面)
    $hPen = _WinAPI_CreatePen($PS_SOLID, $width, $color)
    $obj_orig = _WinAPI_SelectObject($hDC, $hPen)

    _WinAPI_DrawLine($hDC, $start_x - $length, $start_y, $start_x - 5, $start_y) ; 水平左
    _WinAPI_DrawLine($hDC, $start_x + $length, $start_y, $start_x + 5, $start_y) ; 水平右
    _WinAPI_DrawLine($hDC, $start_x, $start_y - $length, $start_x, $start_y - 5) ; 垂直上
    ;_WinAPI_DrawLine($hDC, $start_x, $start_y + $length, $start_x, $start_y + 5) ; 垂直下
    _WinAPI_MoveTo($hDC, $start_x, $start_y + $length)
    _WinAPI_LineTo($hDC, $start_x, $start_y + 5)

;   Sleep($time) ; 穿过屏幕几秒

    ; 刷新桌面(清扫穿过)
    _WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN)

    ; 清除资源
    _WinAPI_SelectObject($hDC, $obj_orig)
    _WinAPI_DeleteObject($hPen)
    _WinAPI_ReleaseDC(0, $hDC)
EndFunc

lpxx 发表于 2015-3-7 15:49:29

这不失为一种方法。但竖线就没法这样搞了。
smooth 发表于 2015-3-6 23:06 http://www.autoitx.com/images/common/back.gif

竖线的话,宽度为1,高度自定义啊。

shqf 发表于 2015-3-7 21:42:00

本帖最后由 shqf 于 2015-3-7 21:44 编辑

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 406, 247, 192, 124)
GUICtrlCreateLabel("", 10, 10, 10, 200, $SS_ETCHEDVERT);竖线
GUICtrlCreateLabel("", 10, 10, 200, 10, $SS_ETCHEDHORZ);横线
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd

netegg 发表于 2015-3-8 00:53:40

回复 6# shqf
虽说效果差不多,不过是凹陷的吧

shqf 发表于 2015-3-8 15:36:37

本帖最后由 shqf 于 2015-3-8 15:37 编辑

如下代码显示的线条好像不凹了,不知是否达到楼主的要求,就是没啥技术含量:
$Label1 = GUICtrlCreateLabel("", 10, 200, 400, 1)
GUICtrlSetBkColor(-1, 0xFF0000)
$Label2 = GUICtrlCreateLabel("", 210, 10, 1, 400)
GUICtrlSetBkColor(-1, 0xFF0000)

netegg 发表于 2015-3-8 17:03:58

回复 8# shqf

这不错

vigiles 发表于 2015-3-9 13:20:34

本帖最后由 vigiles 于 2015-3-9 13:21 编辑

GUICtrlCreateGraphic,GUICtrlSetGraphic 也可以

chamlien 发表于 2016-3-23 18:11:49

回复 8# shqf

简单粗暴,很好!
页: [1]
查看完整版本: 请教如何在GUI上画一条水平的横线?[已解决]