تبلیغات
banner
banner
banner
تبلیغات
banner

فیلم های آموزشی : 36 +

تعداد کاربران : 36 +

تعداد کل مطالب : 338 +

تعداد نظرات : 29 +

حضرت محمد (ص) : ز گهواره تا گور دانش بجوی .

آموزش مقدماتی تا پیشرفته سی شارپ بخش صد و نود و هشتم


 به نام خداوند جان آفرین حکیم سخن در زبان آفرین



آموزش مقدماتی تا پیشرفته سی شارپ بخش صد و نود و هشتم

سلام به همه کاربران وب‌سایت لندلرن

قسمت صد و نود و هشتم


نا معتبر سازي :

كدي كه در قسمت قبل وارد كرديم كاملاً درست كار مي كند، اما اگر مقداري شكل در صفحه رسم كنيم سرعت برنامه كاهش پيـدا كرده و برنامه شروع به چشمك زدن خواهد كرد.

دليل آن نيز اين است كه هنگام نوشتن برنامه يكي از مهمترين نكات برنامه نويسي را در نظر نگرفتيم :

حجم كاري كه بايد توسط برنامه انجام شود را تا حد ممكن كاهش دهـيم .

رسـم مجـدد يـك كنتـرل در صـفحه نمايش كاري است كه به كندي انجام مي شود .

هر چه محدوده اي كه مي خواهيم ترسيم كنيم كـوچكتر باشـد، سـرعت ترسـيم آ ن ناحيه بيشتر خواهد بود و ظاهر برنامه سريعتر ترسيم مي شود.

علت چشمك زدن فرم برنامه در اين است كه ترسيم كنترل توسط ويندوز طي دو مرحله انجام مي شود .

ابتدا وينـدوز تمـام محـدوده اي كه بايد دوباره رسم شوند را پاك مي كند، به اين ترتيب آن ناحيه به رنگ سفيد درخواهد آمد.

سپس به شما اجازه داده مـي شـود كه آن قسمت را مجدداً ترسيم كنيد.

در اين قسمت با فراخواني متد Invalidate در فرم، از ويندوز مي خواهيد كه تمام فرم را مجدداً رسم كند، اما لازم بـه ايـن كار نيست و مي توانيد با فراخواني اين متد در قسمتي كه نقطه ي جديد قرار گرف ته است، از ويندوز بخواهيد كه فقـط آن محـدوده را مجدداً رسم كند.

به اين ترتيب ناحيه ي كوچكتري نياز به ترسيم مجدد خواهد داشت و سرعت اجراي برنامه افزايش پيدا خواهد كرد .

در بخش امتحان كنيد بعد نحوه ي انجام اين كار را با هم بررسي خواهيم كرد.

امتحان كنيد: نا معتبر سازي يك محدوده ي مشخص

  • در كلاس PaintCanvas متد DoMousePaint را پيدا كرده و فراخواني متـد Invalidate را به صورت زير تغيير دهيد تا فقط ناحيه ي مشخص شده توسط مستطيل موجود در شيئ objGraphicsItem مجدد رسم شود:
  • برنامه را اجرا كنيد .
  • مشاهده خواهيد كرد كه هنگام رسم شكل، هر چه قدر هم كه شكل بزرگ شود فرم چـشمك نخواهـد زد.

چگونه كار مي كند؟

هنگامي كه متد SetPoint در شيئ ايجاد شده از كلاس GraphicsCircle را فراخواني مي كنيد، اين متد مقـدار فيلد rectangle را به گونه اي تنظيم مي كند كه حاوي محدوده ي قرارگيري نقطه ي جديد ايجاد شده باشد.

در اين قسمت هنگام فراخواني متد this.Invalidate مستطيل موجود در اين فيلد را به اين متد مي فرستيد و به ايـن ترتيب براي متد مشخص مي كنيد كه فقط اين قسمت از فرم مجدداً بايد ترسيم شود.

بنابراين ويندوز هم فقط اين قسمت از فـرم را پاك مي كند و به شما اجازه مي دهد تا آن را رسم كنيد.

بهينه سازي كردن رسم :

اگر هنگام كار با برنامه دقت كرده باشيد متوجه مي شويد كه بعد از اينكه مقداري از شكل را در فرم رسم كرديد، نقطه هـايي كـه در
فرم قرار مي دهيد به صورت ناهموار رسم مي شوند.

براي علت اين مشكل بايد بگوييم هنگامي كه يك شكل بـزرگ مـي شـود، در حقيقت نقاطي كه آن را تشكيل مي دهند زيادتر مي شوند بنابراين رسم تمام اين نقاط در فرم مدت زمان بيشتري طـول مـي كـشد.

هرچه قدر هم كه مدت زمان رسم اين نقاط در فـرم طـولاني تـر شـود، هنگـام حركـت مـاوس در صـفحه تعـدادي از رويـدادهاي MouseMove نمي توانند فراخواني شوند و بنابراين هنگام عبور ماوس از آن قسمت از فرم نقطه اي در صفحه رسم نمي شود و شكل به صورت ناهموار در مي آيد. در بخش امتحان كنيد بعد نحوه ي حل اين مشكل را با هم مشاهده خواهيم كرد .

امتحان كنيد: بهينه سازي رسم

  • متد PaintCanvas_Paint در كلاس PaintCanvas را پيدا كرده و كد را به شکل زيـر را به آن تغییر دهيد:
  • برنامه را اجرا كرده و شكلي را در فرم رسم كنيد. مشاهده خواهيد كرد كه شكل بسيار نرمتر رسم خواهد شد

چگونگی کارکرد این قسمت را در قسمت صد و نود و نهم دنبال کنید.

 

 


درباره نویسنده
سجاد اسدی
   سجاد اسدی

سجاد اسدی هستم دانشجوی رشته نرم افزار و علاقه مند به تدریس و یادگیری دروس مرتبط با تکنولوژی نرم افزار و اینترنت اشیاء جهت ارتباط با بنده مراجعه شود به آیدی سروش و تلگرام : @ordervira و پیج بنده در اینستاگرام instagram.com/sajjadred11 ""اللهم صل علی محمد و آل محمد"" برای شروع هیچ وقت دیر نیست. "الهم عجل لولیک الفرج"

دیدگاه بگذارید

avatar
  اشتراک  
اطلاع رسانی

aparat کانال آپارات

soroush کانال سروش

کانال آی گپ