cherry_jyx 2021-05-18 23:32 采纳率: 0%
浏览 34

C语言做图形交互,如何使鼠标的动作转化为杆cue的移动并用图形画出来?

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);
}

​
  • 写回答

1条回答 默认 最新

  • 泡沫o0 2023年度博客之星上海赛道TOP 1 2023-06-11 14:12
    关注

    你的代码已经正确的捕获了鼠标的移动,并将移动转换为了力和角度。这个力和角度可以被用来移动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的位置,并在屏幕上画出来。

    评论

报告相同问题?

悬赏问题

  • ¥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