PDA

View Full Version : سوال: رسم خط با استفاده از موس



rash44
دوشنبه 18 آبان 1388, 07:40 صبح
سلام
من 1 برنامه نوشتم که می خوام زمانی که کاربر توی 2 نقطه از صفحه کلیک کرد 1 خ بین دونقطه ترسیم بشه .
الان قبل از کلیک کردن خط رسم میشه و بجای خط هم نفطه چین رسم میشه
در ضمن من تاز دستور cleardevie هم پاک کردن صفحه استفاده می کنم اما هیچ اتفاقی نمی فته
در واقع می خوام بعد از اینکه 1 خط رسم شد با کلیک مجدد خط قبلی پاک بشه و توی صغحه فقط حط جدید نمایش داده بشه
مشکل برنامه کجاست ؟؟؟




#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
void initmouse()
{
asm mov ax,0
asm int 33h
}
void mouseon()
{
asm mov ax,1
asm int 33h
}

void mouseoff()
{
asm mov ax,2
asm int 33h
}
void mousestate(int *m,int *n,int *k)
{
int x,y,z;
asm mov ax,3
asm int 33h
asm mov x,cx
asm mov y,dx
asm mov z,bx
*m=x;*n=y;*k=z;
}
main()
{
int gmode,gdrive=DETECT,color,patern,x1,y1,x2,y2,s;
char st1[30],st2[30];
initgraph(&gdrive,&gmode,"c:\\tc\\bgi");
initmouse();
//mouseon();

while(!kbhit())
{
mousestate(&x1,&y1,&s);
mousestate(&x2,&y2,&s);
line(x1,y1,x2,y2);
//cleardevice();
}
getch();
closegraph();
}

mortezamsp
دوشنبه 18 آبان 1388, 09:59 صبح
با سلام.

دستور cleardevice فقط تنظیمات رو ریست میکنه.برای پاک کردن از دستور clrscr() استفاده کن.



int x1,x2,y1,y2,click;
//get first pos
cliack=0;
while( click==0 ) //if clicked get position
{
getmousepose(&x1,&y1,&click); //get mouse position
}
//get seccond pos
click=0;
while( click==0 )
{
getmousepose(&x2,&y2,&click); //get mouse position
}
clrscr();
line(x1,y1,x2,y2);


این هم هست ( که بدرد نخوره )



click=0;
while( click==0 )
{
getmousepose(&x1,&y1,&click); //get mouse position
}
while( click==1 )
{
getmousepose(&x2,&y2,&click);
clrscr();
line(x1,y1,x2,y2);
}

hamed3
پنج شنبه 20 خرداد 1389, 13:40 عصر
ببخشید خود شما این اطلاعات رو که از موس در C++‎ استفاده بشه از کدوم مرجع یا کتاب یا... یادگرفتید.

saber187518
شنبه 22 خرداد 1389, 01:29 صبح
با سلام
دوست عزیز شما گفتید که با کلیک بر روی دو نقطه از صفحه نمایش خط ترسیم بشه.
برنامه ای که شما نوشتید بدون کلیک کردن و به محض باز شدن برنامه شروع بع ترسیم نقطه در مکان فعلی ماوس میکنه.
این حرکت اشتباهه برای اینکه بتونی کارتو انجام بدی باید بعد از کلیک مختصات رو نگهداری و بعد از 2 کلیک نقاط اول و دوم را با یک خط به هم مرتبط کنی.
در مورد مرجع یادگیری گرافیک:
من خودم با خوندن help زبان یاد گرفتم و به شما هم پیشنهاد میکنم.
موفق باشی