这是我的代码... curX和curY是我当前的X和Y坐标,而tmpX和tmpY是相对的X和Y值(鼠标移动了多少)。
curX:= curX+tmpX;
curY:= curY+tmpY;
我使用这些值来移动/控制我的光标形状 如何将光标保留在屏幕内?
我尝试限制值,直到Screen.Height和Screen.Width ......这是代码。
if(curX>Screen.Width) then
curX:=Screen.Width;
if(curY>Screen.Height) then
curY:=Screen.Height;
但它不起作用。
解决了!(排序):
curX:= max(0, min((curX+tmpX), Screen.Width));
curY:= max(0, min((curY+tmpY), Screen.Height));
我唯一的问题是(0,0)显然不是最左上角(非常接近,我认为只有几个像素)和(Screen.Width,Screen.Height)不是上层最右边(也关闭,光标在最右边消失,但我认为是一个应该表现那样)。
答案 0 :(得分:2)
您可以通过计算(curX + tmpX)mod(screenSizeX)或使用curX
限制curX:= min(curX+tmpX, screenSizeX)
值来创建周期性边界条件。
答案 1 :(得分:1)
如果您正确限制它,它将不会超出您的范围。如果您想知道它为何被破坏,请发布您的代码。
var1 := Inc(var1,amt);
var2 := Inc(var1,amt);
if var1 > limit1 then
var1 := limit1;
if var2 > limit2 then
var2 := limit2;
您必须小心了解您的限制是否已关闭系统中的所有屏幕,而不仅仅是当前屏幕。不是每个人都只有一个屏幕。有些人有多个屏幕。