可以试试用winapi
GetCursorPos和ScreenToClient
只能斜着步进增量明显是因为你固定了增量(那个变量a)
试试看下面行否,按着鼠标左键不放然后移动鼠标会跟随,松开后停止跟随
我数学和物理和脑子都不好,想不出啥好方法改变增量,只能这样了- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <windows.h>
- #include <graphics.h>
-
- int main()
- {
- initgraph(640, 480);// 初始化图形界面
- int a=10;
- int b=10;
-
- IMAGE img0;
- loadimage(&img0,"菜菜城1.jpg",640,480);
- putimage(0, 0, &img0);
-
- IMAGE img;
- loadimage(&img, "李寻欢1.png", 100, 100);
-
- HWND wdhd;
- POINT poi;
- ExMessage exmsg;
- LONG posX,posY,imgX,imgY;
- imgX=0;
- imgY=0;
- int aaa=0;//移动开关
- double c=0.2;//移动百分比
- wdhd=GetHWnd();//获取窗口句柄
-
- putimage(0,0,&img);
-
- while (!kbhit()) {// 无限循环,直到用户按下ESC键
-
- if(peekmessage(&exmsg,EX_MOUSE)){
- if(WM_LBUTTONDOWN==exmsg.message){aaa=1;}//开启移动
- if(WM_LBUTTONUP==exmsg.message){aaa=0;}//关闭移动
- }
-
- if(aaa){
- GetCursorPos(&poi);//获取当前光标位置
- ScreenToClient(wdhd,&poi);//转换为客户区位置
-
- posX=poi.x>0?poi.x:0;
- posX=posX>640?640:posX;
- posY=poi.y>0?poi.y:0;
- posY=posY>480?480:posY;
-
- posX=posX-imgX;//横向移动距离
- posY=posY-imgY;//纵向移动距离
- imgX=(LONG)(imgX+posX*c);
- imgY=(LONG)(imgY+posY*c);
-
- if(imgX > 640){imgX=640;}
- if(imgX < 0){imgX=0;}
- if(imgY > 480){imgY=480;}
- if(imgY < 0){imgY=0;}
-
- putimage((int)imgX,(int)imgY,&img);
- }
-
- }
- closegraph(); // 关闭窗口
- return 0;
- }
复制代码
|