zb7512511 发表于 2011-5-9 13:38:18

在游戏窗口中间画一个矩形框,怎么实现?

在游戏窗口中间画一个矩形框,只有外框,中空。
宽度为游戏窗口的1/3
高度为1/2

the886 发表于 2011-5-9 15:52:28

无法实现gdi 试试

lanfengc 发表于 2011-5-9 19:13:31

给你个例子,自己看吧。 有注释。

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

ShowCross(@DesktopWidth / 2, @DesktopHeight / 2, 200, 20, 0xFF, 3000)

;            中心点的坐标X Y   线的长度/2线宽颜色   延迟时间
Func ShowCross($start_x, $start_y, $length, $width, $color, $time)
        Local $hDC, $hPen, $obj_orig

        $hDC = _WinAPI_GetWindowDC(0) ; 获取桌面的DC
        $hPen = _WinAPI_CreatePen($PS_SOLID, $width, $color);创建画笔对象
        $obj_orig = _WinAPI_SelectObject($hDC, $hPen);将对象选择到设备描述表中。
       
        _WinAPI_DrawLine($hDC, $start_x - $length, $start_y - $length, $start_x + $length, $start_y - $length) ; 上面的那条线 从左到右
        Sleep(1000);这个延迟在实际应用中不需要。我是为了让你看的更清楚,才加的
        _WinAPI_DrawLine($hDC, $start_x - $length, $start_y + $length, $start_x + $length, $start_y + $length) ; 下面的那条线 从左到右
        Sleep(1000);这个延迟在实际应用中不需要。我是为了让你看的更清楚,才加的
        _WinAPI_DrawLine($hDC, $start_x - $length, $start_y - $length, $start_x - $length, $start_y + $length) ; 左面的那条线 从上到下
        Sleep(1000);这个延迟在实际应用中不需要。我是为了让你看的更清楚,才加的
        _WinAPI_DrawLine($hDC, $start_x + $length, $start_y - $length, $start_x + $length, $start_y + $length) ; 右面的那条线 从上到下
        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

飘云 发表于 2011-5-9 21:20:13

按照3楼的代码,我对魔兽3窗口进行了绘图,可是对使用dx的游戏画面貌似不怎么好用哎,虽然也有画出来,但是一直闪烁,显示的也不完整
页: [1]
查看完整版本: 在游戏窗口中间画一个矩形框,怎么实现?