如何在DirectX中绘制2D橡皮筋矩形?优选使用C#。DirectX中如何绘制橡皮筋矩形?
2
A
回答
3
经典的方式做橡皮是:
- 绘制通常场景,即“后台”
- 切换到“XOR模式”,在这里你的笔会已经XOR像素的帧缓冲。这里的模式是XOR非常重要,因为XOR是无损“可恢复的”,与例如添加操作不同。
- 虽然“橡皮”:
- 绘制橡皮矩形在当前坐标
- 在下一帧,再次绘制矩形,仍使用XOR,利用其先前的坐标。这将删除矩形,使帧缓冲区保持不变。
- 更新矩形的坐标
如何做到这一点“与DirectX”细节有点困难......我相信DirectDraw的,这样做的“老派”的方式2D DirectX中已过时,所以我猜你必须使用Direct3D。不幸的是,我不确定细节,那里。这可能是因为找到预定义的功能来执行异或绘图,并且需要自己推出。希望有人能提供更好的细节。道歉,如果你已经在加速橡皮带理论本身。
0
您需要两个点变量(每个都包含x和y坐标)。我们称他们为FirstPoint和SecondPoint。
在mousedown上,将当前鼠标位置存储到FirstPoint和SecondPoint。只要鼠标关闭,每当它移动时,都会用新的鼠标位置更新SecondPoint。
然后每个框架如果鼠标关闭,绘制一个基于两个角落的矩形,FirstPoint和SecondPoint。你需要一点数学算法来检测它们是左上角/右下角还是右上角/左下角,哪一个是哪个,然后在它们之间或两个三角形之间画一个矩形。在绘制之前,您当然必须切换到正交(2D)模式。
我不确定unwind的答案,我甚至不知道如何进行异或操作,它似乎过于复杂,除非您特别想要矩形为背景的负面(这就是XOR我相信手术会这样做)。此外,如果你在每一帧重画场景,没有理由来回去做一些愚蠢的异或以擦除前一个矩形;它将通过绘制新框架而写完。
我个人更喜欢绘制一个具有坚实轮廓和半透明填充的矩形;为此,请将当前颜色设置为alpha值可能为128(或0.5f),然后在两点之间绘制矩形,然后将多边形绘制模式更改为直线并设置颜色固定,然后绘制另一个矩形。
最后,我相信你会想对橡皮筋做出反应;当鼠标被释放时,根据第一点和第二点变量做你需要的。此外,您的绘图代码应该只在鼠标关闭时绘制矩形,所以它将停止绘制。
相关问题
- 1. Qt橡皮筋选择矩形透明
- 2. 用ontouchevent绘制橡皮筋线
- 3. ios和橡皮筋
- 4. 如何实现橡皮筋效果?
- 5. OpenGL:Windows Vista/7中的橡皮筋
- 6. jQTouch中的iscroll橡皮筋效果
- 7. 使用橡皮筋解决凸壳?
- 8. 橡皮筋算法的一维失真
- 9. 在Android上的Gallery中模仿iOS中的“橡皮筋”效果
- 10. Winforms应用程序中填充的橡皮筋
- 11. WPF在列表框中实现橡皮筋类型选择
- 12. C#如何在面板上绘制橡皮筋选择矩形,就像在Windows资源管理器中使用的那样?
- 13. 如何在OpenGL场景上绘制透明橡皮条
- 14. 如何在挑选第一个点后拾取第二个点时绘制橡皮筋线?
- 15. 如何绘制矩形?
- 16. QChartView,橡皮筋和鼠标右键行为
- 17. iOS上的橡皮筋效应离子 - 黑色背景
- 18. 使用QT调整大小的橡皮筋
- 19. 无法禁用离子ios“橡皮筋”视图
- 20. WPF窗口调整大小 - 无预览/显示橡皮筋
- 21. Directx C++ - 绘制DNA形状
- 22. iPhone石英绘图橡皮擦
- 23. 橡皮擦不适用于iOS绘图
- 24. QGraphicsView:如何使橡皮筋选择只出现在鼠标左键上?
- 25. 如何在Paper.js中绘制矩形?
- 26. 如何在python中绘制矩形?
- 27. 如何在flex 4.5.1中绘制矩形?
- 28. 在图框上绘制矩形 - 如何限制矩形区域?
- 29. Android - 绘制矩形
- 30. 在MKMapView中绘制矩形