如何在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. 如何在OpenGl橡皮筋
- 4. ios和橡皮筋
- 5. 用橡皮筋雕刻
- 6. 如何禁用橡皮筋效果iOS?
- 7. 如何实现橡皮筋效果?
- 8. 用Pixi.js绘制鼠标选择区域(橡皮筋)/ html Canvas
- 9. Chrome中的“橡皮筋”滚动问题
- 10. OpenGL:Windows Vista/7中的橡皮筋
- 11. jQTouch中的iscroll橡皮筋效果
- 12. 在uitableview中禁用橡皮筋滚动
- 13. 在图表控件中的“橡皮筋”矩形内获取所有数据点
- 14. 橡皮筋算法的一维失真
- 15. addMouseListener到橡皮筋的画布
- 16. QgraphicsView橡皮筋效果缩放行为
- 17. 橡皮筋与iScroll和jQuery手机
- 18. 使用橡皮筋解决凸壳?
- 19. 如何在bing地图中创建“橡皮矩形选择”
- 20. 如何实现项目列表的橡皮筋选择
- 21. 如何用box2d调谐这个蹦床/橡皮筋物体?
- 22. 如何在C++中使用DirectX绘制透明矩形?
- 23. 在Android上的Gallery中模仿iOS中的“橡皮筋”效果
- 24. C#如何在面板上绘制橡皮筋选择矩形,就像在Windows资源管理器中使用的那样?
- 25. Winforms应用程序中填充的橡皮筋
- 26. WPF在列表框中实现橡皮筋类型选择
- 27. 如何在OpenGL场景上绘制透明橡皮条
- 28. 如何在挑选第一个点后拾取第二个点时绘制橡皮筋线?
- 29. 如何用kineticjs制作橡皮
- 30. 如何绘制矩形?