如何在DirectX中绘制2D橡皮筋矩形?最好使用C#。
答案 0 :(得分:3)
橡皮筋的经典方法是:
有关如何“使用DirectX”执行此操作的详细信息有点难...我相信DirectDraw是在DirectX中执行2D的“老派”方式已过时,因此我猜您必须使用Direct3D。不幸的是,我不确定细节。可能是你找不到预先定义的功能来进行XOR绘图,并且需要自己动手。希望有人可以提供更好的细节。如果你已经掌握了橡皮筋理论本身的速度,那就道歉了。
答案 1 :(得分:0)
您需要两个点变量(每个变量都有x和y坐标)。我们称他们为FirstPoint和SecondPoint。
在mousedown上,将当前鼠标位置存储到FirstPoint和SecondPoint。只要鼠标停止,只要它移动,就用新的鼠标位置更新SecondPoint。
然后每个帧如果鼠标向下,则根据两个角,FirstPoint和SecondPoint绘制一个矩形。你需要一点点数学来检测它们是左上角/右下角还是右上角/左下角,哪一个是哪个,但是你只需在它们之间画一个矩形,或者两个三角形。你当然必须在绘图之前切换到正交(2D)模式。
我不确定放松的答案,我甚至不知道怎么做XOR操作而且看起来过于复杂,除非你特别希望矩形是背景的负面(这是XOR操作的内容)会这样做,我相信)。此外,如果你每帧重绘场景,没有理由来回做一些愚蠢的XOR来擦除前面的矩形;通过绘制新框架已经写好了。
我个人更喜欢画一个带有实线轮廓和半透明填充的矩形;为此,将当前颜色设置为alpha值可能为128(或0.5f)并在两点之间绘制矩形,然后将多边形绘制模式更改为line并将颜色设置为solid,并绘制另一个矩形。 / p>
最后,我相信你会想要对橡皮筋作出反应;释放鼠标时,根据FirstPoint和SecondPoint变量执行任何操作。此外,您的绘图代码应仅在鼠标向下时绘制矩形,因此它将停止绘制。