| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 962 人关注过本帖
标题:[求助]鼠标绘图
只看楼主 加入收藏
guyu8ps
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-5-23
收藏
 问题点数:0 回复次数:3 
[求助]鼠标绘图

下为小可编的一小程序,是绘制基本图形的,内有些许漏洞,请各位大侠帮帮忙,指点一二!
拜谢!
#include<DOS.H>
#include<graphics.h>
#include<stdlib.h>
#include<bios.h>
main()
{
union REGS i,o;
int driver=DETECT,mode=0;
int x,y,c1,c2,color=0;
int x1=0,y1=0,x2=0,y2=0;
int choice;
int flag=0;
float R;
log:printf("choice:1-Line 2-Rectangle 3-Circle\n");
printf("Please input the choice:");
scanf("%d",&choice);
initgraph(&driver,&mode,"C:\\TC\\BGI");
setbkcolor(color);
setcolor(2);
i.x.ax=32;/*鼠标驱动*/
int86(0X33,&i,&o);
i.x.ax=0; /*初始化鼠标*/
int86(0X33,&i,&o);
i.x.ax=1; /*显示鼠标*/
int86(0x33,&i,&o);
while(!bioskey(1)) /*kbhit()检测按键*/
{
i.x.ax=6;/*检测左键释放信息*/
i.x.bx=0;
int86(0x33,&i,&o);
x=o.x.cx;
y=o.x.dx;
c1=o.x.ax;
i.x.ax=5;/*检测右键按下信息*/
i.x.bx=1;
int86(0x33,&i,&o);
c2=o.x.ax;
if(c2==2) /*按下右键*/
{
closegraph();
printf("%d",&flag);
goto log;
}

if(c1==1) /*释放左键*/
{
i.x.ax=2;
int86(0x33,&i,&o);
i.x.ax=1;
int86(0x33,&i,&o);
if(!flag)
{
x1=x;
y1=y;
flag=1;
fillellipse(x1,y1,2,2);
}
else
{
x2=x;
y2=y;
fillellipse(x2,y2,2,2);
switch(choice)
{
case 1:
line(x1,y1,x2,y2);
break;
case 2:
rectangle(x1,y1,x2,y2);
break;
case 3:
R=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))/2;
circle((x1+x2)/2,(y1+y2)/2,R);
break;
default:
closegraph();
}
flag=0;
}
}
}
}


搜索更多相关主题的帖子: 鼠标 绘图 
2006-06-27 21:45
guyu8ps
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-5-23
收藏
得分:0 
不好意思,在下忘加math.h了

2006-06-27 21:49
jig
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
收藏
得分:0 
建议LZ把鼠标的绘制,按键。。等等功能做成函数调用,这样容易查处错误。

还有,你应该把鼠标封装在一个中断中,这样才能很好的发挥鼠标的作用,当然要是没注意效率,鼠标可能在主住界面留下残影。具体的你可以去参考NEO,或去看看我写的JS

个人网站 -  http://.h001.
2006-07-05 16:53
herendagao
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2006-5-3
收藏
得分:0 
不好意思,你的问题我解决不了.但我有问题想问问你,i.x.ax=6;/*检测左键释放信息*/
i.x.bx=0;
int86(0x33,&i,&o);
x=o.x.cx;
y=o.x.dx;
c1=o.x.ax;
其中一i.x.bx=0是不是表示对左键的控制,而i.x.bx=1就表示对右键的控制,但我写的一个小函数里有这样的语句
i.x.ax=3 i.x.bx=1却识别不了右键?
还有c=o.x.ax对应的是寄存器吧,具体怎么对应啊,在我的函数中只能用c1=o.x.bx来接受键是否被按下的状态,改用其他的就不行.
希望你能不吝赐教,谢谢!

2006-09-15 22:29
快速回复:[求助]鼠标绘图
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014766 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved