我使用OpenGL在视图中使用鼠标进行绘图。 Everythings看起来还不错,但是当我快速绘制鼠标时,它并没有在每个像素中绘制,显示出一些间距。我添加image link here。我当前的mouseDragged代码非常简单:
- (void) mouseDragged:(NSEvent *)event
{
location = [self convertPoint: [event locationInWindow] fromView:self];
NSLog(@"current location (%g,%g)\n",location.y,location.x);
[self drawSomething];
}
更准确地注册鼠标位置的任何解决方案?或maby某种方式来注册currentMouseLocation和previousMouseLocation?像iOS函数 previousLocationInView:之类的东西,这样我可以告诉OpenGL在每两个点之间绘制线条?
答案 0 :(得分:3)
试试这个:
- (void) mouseDragged:(NSEvent *)event
{
location = [self convertPoint: [event locationInWindow] fromView:self];
NSLog(@"current location (%g,%g)\n",location.y,location.x);
NSLog(@"previous location (%g,%g)\n",prev_location.y,prev_location.x);
[self drawSomething];
prev_location = location;
}
答案 1 :(得分:1)
在'mouseDragged'中,您可以存储鼠标的先前位置,甚至可以跟踪存储动态数组中各点的整个路径。这就是为什么没有“以前的位置”属性 - 你可以自己做一个。
有鼠标敏感这样的东西,所以有些跳过是不可避免的 - 所有你能做的就是内插,这实际上意味着你必须从(prevX,prevY)到(thisX,thisY)画线。如果存储了所有点,则只绘制折线。