| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 425 人关注过本帖
标题:求助!图形问题!
取消只看楼主 加入收藏
梦想中国
Rank: 2
等 级:新手上路
威 望:5
帖 子:539
专家分:0
注 册:2006-2-26
收藏
 问题点数:0 回复次数:0 
求助!图形问题!

各位好:请帮我看看为什么我的程序在鼠标单击方块的时候不能将方块删除呢?
#include<graphics.h>
#include<dos.h>
#include<conio.h>
union REGS i,o; //DOS中定义的结构
int button,x,y;
struct FF{
int left,top,right,bottom;
};
struct FF graph={200,200,400,400}; //总图坐标
struct FF dot[11][11]; //方块数量
void show_mouse(void); //显示鼠标函数
void draw_graph(struct FF *g); //绘制图形大框函数
void draw_dot(struct FF dot[11][11]); //绘制方块函数
void process_program(void); //主要处理函数
int status_mouse(void);
void mouse_on(struct FF dot[11][11]);
int main(void)
{
int gdriver=DETECT,gmode;
clrscr();
initgraph(&gdriver,&gmode,"c:\\tc");
show_mouse();
draw_graph(&graph);
draw_dot(dot); file://绘制方块(点)
process_program();
getch();
closegraph();
return 0;
}
void show_mouse(void)
{
i.x.ax=1;
int86(0x33,&i,&o);
}
void draw_graph(struct FF *g) //此函数不会错
{
int i;
setcolor(3);
rectangle(g->left,g->top,g->right,g->bottom);
for(i=1;i<=10;i++)
{
line(g->left,g->top+i*20-20,g->right,g->top+i*20-20);
line(g->left+i*20-20,g->top,g->left+i*20-20,g->bottom);
}
}
void draw_dot(struct FF dot[11][11])
{
int k,m,n;
for(k=1;k<=10;k++) // set every line first element
{
dot[k][1].left=202;
dot[k][1].top=202+k*20-20;
dot[k][1].right=218;
dot[k][1].bottom=218+k*20-20;
}
for(m=1;m<=10;m++) //设置除第一元素外的其他元素
{
for(n=2;n<=10;n++)
{
dot[m][n].left=dot[m][n-1].left+20;
dot[m][n].top=dot[m][n-1].top;
dot[m][n].right=dot[m][n-1].right+20;
dot[m][n].bottom=dot[m][n-1].bottom;
}
}
setfillstyle(1,2);
for(m=1;m<=10;m++)
{
for(n=1;n<=10;n++)
{
bar(dot[m][n].left,dot[m][n].top,dot[m][n].right,dot[m][n].bottom);
}
}
}
void process_program(void)
{
char ch;
while(1)
{
if(kbhit())
{
ch=getch();
if(ch==9) //if input tab key,exit program
break;
}
if(status_mouse())
mouse_on(dot);
}
}
int status_mouse(void) //鼠标状态函数,不会错
{
i.x.ax=3;
int86(0x33,&i,&o);
button=o.x.bx;
x=o.x.cx;
y=o.x.dx;
return button;
}
void mouse_on(struct FF dot[11][11])
{
int v1,v2;
for(v1=1;v1<=10;v1++)
for(v2=1;v2<=10;v2++)
{
if(x>=dot[v1][v2].left && x<=dot[v1][v2].right && y>=dot[v1][v2].top && y<=dot[v1][v2].bottom)
{

setfillstyle(1,0);
bar(dot[v1][v2].left,dot[v1][v2].top,dot[v1][v2].right,dot[v1][v2].bottom);
break;
}
}
}


[此贴子已经被作者于2006-3-4 21:41:07编辑过]

搜索更多相关主题的帖子: 图形 
2006-03-04 20:59
快速回复:求助!图形问题!
数据加载中...
 
   



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

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