ورود

View Full Version : باقی ماندن اشکال گرافیکی در فرم



shr6557
سه شنبه 23 آبان 1385, 19:38 عصر
سلام
من با vc++ .net 2005 برنامه نویسی می کنم
مشکلم اینکه که هر شکلی که توی فرم رسم می شه موقتی یعنی وقتی لازم می فرم مجدد رسم بشه از بین می ره
چه کار می تونم بکنم؟

sh_roohani
چهارشنبه 24 آبان 1385, 10:09 صبح
سلام،

نمی دونم ++C کار می کنید یا #C. ولی به هر صورت لازمه در محیط خودتون پیغام معادل WM_PAINT
ویندوز رو پیدا کنید و کد مربوط به ترسیم رو در handler اون پیغام بذارین تا همیشه ترسیم مورد نظرتون انجام بشه.

shr6557
پنج شنبه 02 آذر 1385, 14:46 عصر
سلام
من که گفتم در VC++ .net کار می کنم
این جواب شما کمکی به من نکرد
در ضمن بگم من می تونم اشکال رو رسم کنم تو یک فرم
ولی وقتی این فرم زیر فرم های دیگه می ره یا از صفحه ی مانیتور خارج می شه اشکال گرافیکی محو می شن!
لطفا کمک کنید

kochol
جمعه 03 آذر 1385, 08:49 صبح
سلام
امیدوارم که با کد زیر درست بشه البته اگه دات نت کار می کنید.
Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque, True)

shr6557
جمعه 03 آذر 1385, 11:23 صبح
من با دات نت کار می کنم ولی با کد بالا هم درست نشد
می دونین من یک برنامه (CLR) نوشتم که وقتی موس رو در حالی که دکمه ی آن رو نگه داشته روی فرم می کشی با استفاده از کلاس graphic روی مسیری که تو می ری نقطه رسم می کنه
ولی مشکل اینجاست ه تا این فرم میره زیر یه فرم دیگه یه با هر نحوی از دید خارج می شه تمام چیز هایی که رسم کرده بودم پاک می شه کد شما هم دو تا شو امتحان کردم ولی نشد
plz help

kochol
جمعه 03 آذر 1385, 15:12 عصر
سلام
من فکر کنم برای این کار حتما باید مکان تمامی نقاط ها را حفظ کنید و وقتی تابع Paint صدا زده می شه دوباره با استفاده از کلاسهای گرافیک اونو بکشید.

shr6557
جمعه 03 آذر 1385, 17:49 عصر
سلام
این کاری که من میخوام بکنم اینه که روی صفحه یک شکل کشیده بشه
یه چیزی مثل paint یعنی فقط نقطه نیست که دوباره قابل نمایش باشه
فکر می کنم کار ساده ای باشه نباید انقدر درد سر داشته باشه؟

kochol
شنبه 04 آذر 1385, 08:54 صبح
سلام
من قبلن با +gdi کار کرده ام و یک بازی تتریس باهاش ساختم تنها راهی که می شه نگه داشت همونی هست که گفتم.

sh_roohani
شنبه 04 آذر 1385, 09:03 صبح
سلام،

یه جورایی راهش همینه که kochol گفت. ببینین، شما باید بار اول که یه رویداد مثل WM_MOUSEMOVE با حالت پایین کلید چپ اتفاق می افته، یه Compatible Bitmap بسازین و تو یه Compatible DC انتخابش کنین و روش ترسیم کنین. بعدش همون Bitmap رو نگه دارین واسه رویداد بعدی. اینجوری هم دیگه مجبور نیستین کل نقاط رو نگه دارین، هم راحت با IPicture اونو توی یه فایل ذخیره کنین. از طرف دیگه شاید استفاده از Metafile هم ایده بدی نباشه.

shr6557
شنبه 04 آذر 1385, 19:31 عصر
سلام
آقا من تازه کارم
با جوابی که شما دادی فقط فهمیدم چقدررر چیزا هست که بلد نیستم
این metafile هم خیلی می بینم ولی نمی دونم چیه
یعنی شما می گید هر بار که دکمه mouse رو فشار داد من دوباره همه چیز رو از اول بکشم!