PDA

View Full Version : سوال: استفاده از یه متد شبیه Refresh



regbyte
دوشنبه 11 آذر 1387, 18:47 عصر
سلام
من یه کامپوننت کوچیک نوشتم و برای اعمال تغییرات در ظاهر آن، از متد Refresh استفاده می کنم، در حالت عادی مشکلی نیست، اما هنگامی که در یک حلقه قرارش می دم،
چشمک می زنه، که خب چون از متد Refresh استفاده می کنم فکر کنم عادی باشه، چه جوری از چشمک زدنش جلوگیری کنم؟ از متد دیگری می تونم استفاده کنم؟

h.jaza
دوشنبه 11 آذر 1387, 23:37 عصر
راجع به این کامپوننت بیشتر توضیح بدین تا معلوم بشه به چه چیز هایی دسترسی داریم.

regbyte
سه شنبه 12 آذر 1387, 01:28 صبح
با استفاده از Paint یه نمودار میکشه.

majid325
سه شنبه 12 آذر 1387, 05:28 صبح
اين مشكل معمولا هست(البته راهايي هم براي بهتر شدن هست)، راه حل كلي استفاد از wpf هست.

regbyte
سه شنبه 12 آذر 1387, 16:46 عصر
بجز wpf چه راهی وجود دارد؟(از dotNet Framework 2.0 استفاده می کنم)

h.jaza
چهارشنبه 13 آذر 1387, 16:28 عصر
روش انجام کارت چجوریه؟

چه زمانی با Refresh کار می کنی؟

و آیا روی برنامه های دیگه ای به غیر از Paint چک کردی یا نه؟


ویرایش شده (جواب پست 7):


خوب منم منظورم همون بود. رویداد های دیگه ای که میشه جای اون Paint استفاده کرد و چک کردی؟

regbyte
چهارشنبه 13 آذر 1387, 17:43 عصر
منظورم رویداد paint است نه نرم افزار Paint !!!

regbyte
یک شنبه 17 آذر 1387, 11:57 صبح
کسی نمیتونه یه راهنمایی کنه؟

mehdi.mousavi
یک شنبه 17 آذر 1387, 12:48 عصر
کسی نمیتونه یه راهنمایی کنه؟

البته که هست! برای اینکه جلوی پرش صفحه (Flickering Problem) رو بگیرید، باید از تکنیک Off-Screen DC یا همون Double Buffering استفاده کنید. (برنامه نویسهای CPP این تکنیک رو عموما با نام Off-Screen DC میشناسن). در این تکنیک، از دو بافر جداگانه برای نمایش چارت (در مثال شما)، استفاده میشه. به این ترتیب که ابتدا چارت در بافر اولی کشیده میشه، و هنگامیکه عمل رسم چارت در بافر اول تموم شد، در متود OnPaint به یکباره اون بافر روی صفحه (بافر دوم) قرار میگیره. به این ترتیب، در متود OnPaint هیچگونه پردازش و رسم و ... ای وجود نخواهد داشت و تنها وظیفه OnPaint نمایش بافر از قبل آماده روی صفحه هست.

با این روش، سرعت نمایش به طرز چشمگیری افزایش پیدا میکنه، و پرش صفحه به حداقل میزان خودش میرسه. لطفا این رو هم در نظر بگیرید، که Handle کردن پیام WM_ERASEBKGND نیز میتونه تاثیر بسزایی در نحوه Refresh شدن صفحه داشته باشه.

پاورقی: جناب majid325، تکنولوژی WPF، چه ربطی به پرش صفحه و Refresh شدن اون داره؟ تو رو خدا اگه از چیزی سر در نمیارید، بیخودی پاسخهای من در آوردی ندید و چهار نفر دیگه رو به درد سر نندازید!

regbyte
دوشنبه 18 آذر 1387, 17:41 عصر
با تشکر ، امکان دارد یه مثال کوچیک بزنید؟

mehdi.mousavi
چهارشنبه 20 آذر 1387, 11:07 صبح
با تشکر ، امکان دارد یه مثال کوچیک بزنید؟

خواهش میکنم. اینم یک مثال. (http://www.codeproject.com/KB/graphics/DoubleBuffering.aspx)