[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
可以试试用winapi
GetCursorPos和ScreenToClient

只能斜着步进增量明显是因为你固定了增量(那个变量a)

试试看下面行否,按着鼠标左键不放然后移动鼠标会跟随,松开后停止跟随
我数学和物理和脑子都不好,想不出啥好方法改变增量,只能这样了
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <windows.h>
  5. #include <graphics.h>
  6. int main()
  7. {
  8.     initgraph(640, 480);// 初始化图形界面
  9.     int a=10;
  10.     int b=10;
  11.       IMAGE img0;
  12.       loadimage(&img0,"菜菜城1.jpg",640,480);
  13.       putimage(0, 0, &img0);
  14. IMAGE img;
  15.          loadimage(&img, "李寻欢1.png", 100, 100);
  16. HWND wdhd;
  17. POINT poi;
  18. ExMessage exmsg;
  19. LONG posX,posY,imgX,imgY;
  20. imgX=0;
  21. imgY=0;
  22. int aaa=0;//移动开关
  23. double c=0.2;//移动百分比
  24. wdhd=GetHWnd();//获取窗口句柄
  25. putimage(0,0,&img);
  26.       while (!kbhit()) {// 无限循环,直到用户按下ESC键  
  27. if(peekmessage(&exmsg,EX_MOUSE)){
  28. if(WM_LBUTTONDOWN==exmsg.message){aaa=1;}//开启移动
  29. if(WM_LBUTTONUP==exmsg.message){aaa=0;}//关闭移动
  30. }
  31. if(aaa){
  32. GetCursorPos(&poi);//获取当前光标位置
  33. ScreenToClient(wdhd,&poi);//转换为客户区位置
  34. posX=poi.x>0?poi.x:0;
  35. posX=posX>640?640:posX;
  36. posY=poi.y>0?poi.y:0;
  37. posY=posY>480?480:posY;
  38. posX=posX-imgX;//横向移动距离
  39. posY=posY-imgY;//纵向移动距离
  40. imgX=(LONG)(imgX+posX*c);
  41. imgY=(LONG)(imgY+posY*c);
  42. if(imgX > 640){imgX=640;}
  43. if(imgX < 0){imgX=0;}
  44. if(imgY > 480){imgY=480;}
  45. if(imgY < 0){imgY=0;}
  46. putimage((int)imgX,(int)imgY,&img);
  47. }
  48. }
  49.    closegraph();    // 关闭窗口
  50.    return 0;
  51. }
复制代码
1

评分人数

    • zzz19760225: 可以运行,谢谢大侠的代码技术 + 1

TOP

返回列表