double mousex1 = -1;
double mousey1 = -1;
double mousex2 = -1;
double mousey2 = -1;
double force = 0;
double theta = 0;
void myMouse(int x, int y, int button, int event)
{
uiGetMouse(x,y,button,event);
switch(button)
{
case LEFT_BUTTON:
if(event==BUTTON_DOWN || event==MOUSEMOVE)
{
if ( mousex1 == -1 && mousey1 == -1)
{
mousex1 = x;
mousey1 = y;
DrawCue(5,3.5,0);
Sleep(500);
}
}
else if(event==BUTTON_UP)
{
if ( mousex2 == -1 && mousey2 == -1 && mousex1 != -1 )
{
mousex2 = x;
mousey2 = y;
getforce(abs(mousex2-mousex1),abs(mousey2-mousey1));
DisplayClear();
DrawPoolTable();
DrawCue(5-abs(mousex2-mousex1),3.5,0);
Sleep(500);
mousex1 = -1;
mousey1 = -1;
mousex2 = -1;
mousey2 = -1;
}
}
break;
}
}
void getforce(double dx, double dy)
{
force = dx*dy + dy*dy;
theta = atan(dx/dy);
}
C语言做图形交互,如何使鼠标的动作转化为杆cue的移动并用图形画出来?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 你的代码已经正确的捕获了鼠标的移动,并将移动转换为了力和角度。这个力和角度可以被用来移动cue。
你需要一个函数来根据这个力和角度来绘制cue。这个函数可以根据力和角度来计算cue的位置,并使用图形API来绘制cue。这个函数可以被称为
DrawCue
。假设你已经有一个API可以用来画线,那么DrawCue
可以像下面这样写:void DrawCue(double force, double theta) { double length = force; // 假设力直接决定cue的长度 double cueX1 = 5, cueY1 = 3.5; // cue的初始位置 double cueX2 = cueX1 + length * cos(theta); // cue的结束位置 double cueY2 = cueY1 + length * sin(theta); // 假设你有一个叫DrawLine的函数可以画线 DrawLine(cueX1, cueY1, cueX2, cueY2); }
这个函数根据力和角度来计算cue的结束位置,然后使用这个结束位置和初始位置来绘制cue。这样你就可以在每次鼠标移动时更新cue的位置,并在屏幕上画出来。
解决 1无用
悬赏问题
- ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
- ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
- ¥30 c#打开word开启修订并实时显示批注
- ¥15 如何解决ldsc的这条报错/index error
- ¥15 VS2022+WDK驱动开发环境
- ¥30 关于#java#的问题,请各位专家解答!
- ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
- ¥20 pcf8563时钟芯片不启振
- ¥20 pip2.40更新pip2.43时报错
- ¥15 换yum源但仍然用不了httpd