SajjadKhati
کاربر فعال <A href="http://forum.majidonline.com/f
خوبه که براتون کد مثال به اون واضحی نوشتم که با Counter تعداد Paint ها رو ببینید. در پست قبلی من چند تا Invalidate داریم و چند تا رخداد Paint داریم؟ هر بار Invalidate شد یک Paint اتفاق افتاد؟
چرا روی اون کد ساده قضاوت نمی کنید.
Invalidate با ترتیب ای که شما می خواهید و میگید اتفاق می افته اما Invalidate رسم که نیست، اعلام ابطال ئه با درخواست یک رسم. هیچکدوم از اینجور فرمان ها مثل Invalidate باعث نمیشه کدتون اونجا متوقف بشه تا وقتی که رسمی صورت بگیره. شما Invalidate می کنید و درخواست رسم فرستاده میشه و کدتون ادامه پیدا می کنه. رسم پنجره درخواستی نیست که قبل از اجرای سطر بعدی کدتون اتفاق بیافته. اگر اینطور بود که ماوس موقع جابجایی باید بخاطر هر رسم پنجره ای سکته میکرد و لحظه ای متوقف میشد.
می نویسم ولی چه فایده، باز میگید رسم. پست قبلی ام رو که خوندید. Invalidate یعنی رسم؟ رسم نیست. رسم یک عملیات جدا است و Invalidate یک عملیات جدا. هم روال کار رسم رو توضیح دادم و هم شیوه کار Invalidate رو. دیگه چی بگم.
خیلی ممنون
بله اون کد را متوجه شدم . ممنون
منظورم از اینکه گاها بجای Invalidate ، کلمه ی رسم را بکار بردم ، منظورم خودِ رسم نیست . مثل اون قضیه ی معلم معروف فارسی میمونه که به شاگردش میگفت من میگم اَنِف تو نگو اَنِف ؛ تو بگو اَنِف (همون الف) .
متوجه شدم که Invalidate ، رسم نیست و فقط ابطال هست . رسم رو هر وقت که دوست داشت انجام میده (اما با متد اجرای متد Update ، میگه همون لحظه رسم را انجام بده) .
من منظورم اینه که وقتی متد Invalidate را فراخونی کردیم ، همه شون توی صف میرن دیگه (اگه برداشتم از گفته ی تون اشتباه نباشه) بعد هم به طبع ، رسم های مربوط به اون کنترل هایی که Invalidate کردیم هم باید به ترتیب توی همون صف باشن (یعنی به ترتیب ، هر کنترلی که زودتر از بقیه ی کنترل ها Invalidate شد ، زمانی که میخواد رسمِ مربوط به اون کنترل انجام بشه هم زودتر از بقیه ی کنترل ها انجام میشه) . با فراخونی متد Update هم که گفتین هر چی توی صف هست ، به ترتیب اجرا میشه . پس باید رسم در صف ها هم به ترتیب اجرا بشه.