close
تبلیغات در اینترنت
چگونه می توان در محیط گرافیك زبان C یك شكل پیچیده را حركت داد؟

چگونه می توان در محیط گرافیك زبان C یك شكل پیچیده را حركت داد؟

مجله اینترنتی آفتاب

 

ارتباط آن لاين

 

آمار کاربران


عضو شويد

نام کاربری :
رمز عبور :

فراموشي رمز عبور؟

 

عضويت در سايت

نام کاربری :
رمز عبور :
تکرار رمز :
ایمیل :
نام اصلی :
کد امنیتی : * کد امنیتیبارگزاری مجدد

 

عضويت در خبرنامه


 

تبليغات

 

آخرين ارسال هاي انجمن

 

چگونه می توان در محیط گرافیك زبان C یك شكل پیچیده را حركت داد؟

بازديد:933




در محیط گرافیك در زبانهای برنامه نویسی تحت DOS اشكال ساده مثل مستطیل و دایره را می توان با پاك كردن و كشیدن مجدد براحتی جابجا نمود اما حركت اشكال پیچیده با این روش بسیار وقت گیر می باشد بطوریكه پاك كردن و كشیدن دوباره شكل كاملا به چشم می آید. در چنین مواقعی می بایست شكل مورد نظر را كه در داخل یك مستطیل فرضی قرار دارد , وارد یك حافظه كمكی نمود و محتویات این حافظه را در نقطه ای دلخواه در صفحه چاپ كرد .

در ابتدای كار یك متغیر از نوع int تعریف كنید كه اندازه شكل محاسبه شود و در آن قرار گیرد. یك متغیر نیز از نوع*void تعریف كنید كه در واقع بافری است كه رنگ پیكسل های مستطیل در آن به ترتیب قرار می گیرند تا در موقع لزوم به همان ترتیب چاپ شوند :



 


 


 

int size; 
   void* buffer;

حال می بایست اندازه مستطیل را با تابع imagesize محاسبه و در متغیر size بریزید :

size=imagesize(x1,y1,x2,y2);

كه پارامتر های آن به ترتیب مختصات گوشه بالای سمت چپ مستطیل و گوشه پایین سمت راست آن می باشند
حال حافظه ای را با تابع malloc به اندازه size به buffer اختصاص دهید :

buffer=malloc(size);

الگوی این تابع در سر فایل alloc.h قرار دارد.(الگوی سایر توابع گفته شده در graphics.h می باشد)
حال نوبت به خواندن پیكسلهای مستطیل می باشد. این كار را با تابع getimage انجام دهید كه پیكسلها را خوانده و در بافر قرار می دهد :

getimage(x1,y1,x2,y2,buffer);

كار ما برای خواندن مستطیل به پایان رسیده است . فقط كافیست بافر خوانده شده را با تابع putimage در نقطه دلخواه چاپ كنیم :

putimage(x,y,buffer,COPY_PUT);

دو پارامتر اول این تابع مختصات نقطه مقصد می باشند .(گوشه بالای سمت چپ مستطیل در مقصد) پارامتر دوم بافر محتوی شكل و پارامتر سوم تعیین كننده نوع چاپ شدن شكل می باشد كه دارای حالات زیر است :

Constant Value Meaning 
---------------------------------------------------------------------------------------------------------- 
COPY_PUT 0 Copies source bitmap onto screen 
XOR_PUT 1 Exclusive ORs source image with that already onscreen 
OR_PUT 2 Inclusive ORs image with that already onscreen 
AND_PUT 3 ANDs image with that already onscreen 
NOT_PUT 4 Copy the inverse of the source

دقت كنید كه در پایان برنامه حتما حافظه گرفته شده با دستور malloc را آزاد كنید :

free(buffer);

توجه كنید كه شكل لزوما یك مستطیل نیست بلكه برای ذخیره سازی شكل در حافظه یك مستطیل فرضی دور شكل در نظر گرفته می شود . برای مثال میتوانید كد زیر را كپی كرده و در محیط TC اجرا كنید :

#include 
#include 
#include 
int main()

   int driver=DETECT,mode=0,size,column,row,horiz,vert; 
   void* buffer; 
   initgraph(&driver,&mode,"c:tcbgi"); 
   setcolor(LIGHTBLUE); 
   rectangle(2,2,200,40); 
   setfillstyle(SOLID_FILL,BLUE); 
   floodfill(100,20,LIGHTBLUE); 
   settextstyle(SMALL_FONT,HORIZ_DIR,7); 
   setcolor(WHITE); 
   outtextxy(12,10,"www.PooyeshR.com"); 
   rectangle(0,0,600,400); 
   size=imagesize(1,1,201,41); 
   buffer=malloc(size); 
   getimage(1,1,201,41,buffer); 
   column=1; 
   row=1; 
   horiz=1; 
   vert=1; 
   while(!bioskey(1))
   { 
      putimage(column,row,buffer,COPY_PUT); 
      column+=vert; 
      row+=horiz; 
      if(column==399 || column==1) 
         vert=-vert; 
      if(row==359 || row==1) 
         horiz=-horiz; 
   } 
   free(buffer); 
   closegraph(); 
   restorecrtmode(); 
   return 0; 
}




برچسب هاي مطلب: چگونه می توان در محیط گرافیك زبان C یك شكل پیچیده را حركت داد؟, آموزش c, پروژه های c, مقالات c, آشنایی با c, www.sunbook.ir, سایت مقاله, ;hl\d, jv, shdj ;hl\d, lrhghj,
نوشته شده توسط:حامد ممتاز

 

مطالب مرتبط

 

آخرين مطالب سايت

 

لوگوی دوستان

متفاوت ترین وب سایت سرگرمی

 

بازدیدکنندگان

 

تبادل لينک

 

سايت دوستان



تمامي حقوق ، امتيازات و مطالب براي www.sunbook.ir محفوظ بوده و هر گونه کپي برداري با ذکر منبع مجاز خواهد بود.

Copyright © 2008-2012 by sunbook - All Rights Reserved - Theme design by hamed momtaz
بهترين حالت نمايش و هماهنگي با مرورگرهاي Firefox و Opera و Google Chrome مي باشد