PDA

View Full Version : سوال: مشکل در استفاده از DrawToBitmap



razavi_university
چهارشنبه 15 خرداد 1387, 02:41 صبح
سلام خدمت دوستان عزیز و گل:قلب:
وقتی می خوام از فرمم یه Bitmap بگیرم و فرم Scroll داره (یعنی یکمش پیدا نیست) از اون قسمت عکس نمی گیره
گاهی این مشکل رو میشه با AutoSize و Maximize حل کرد ولی بعضی مواقع فرم بزرگتر از این حرفاست و از صفحه نمایش هم بزرگتر می شود گاهی:عصبانی++:
چه کنم که در مواقعی که گفتم از کل فرم عکس رو بگیره
ممنون
(عکس رو واسه پرینت می خوام)
چندتایی مثال هم در CodeProject بود ولی اونها هم همین مشکل رو داشتند

حامد مصافی
چهارشنبه 15 خرداد 1387, 17:19 عصر
نمیشه!
باید از سایر متد های چاپ استفاده کنید. برای مثال کنترل PrintDocument

ali_kolahdoozan
چهارشنبه 15 خرداد 1387, 18:17 عصر
نمي تواني از چيزي كه پيدا نيست عكس بگيري . ميتوني از كنترلهاي روي فرم يكي يكي عكس بگيري كه سخت هم هست

razavi_university
پنج شنبه 16 خرداد 1387, 12:04 عصر
من روی فرمم یکسری اشکال و کنترل دارم و باید همه اونها توی عکس باشند، حتی اگه داخل یک A4 هم جا نشد بره صفحه بعدی و یا اینکه با یک Scale کل تصویر کوچکتر بشه و توی یه سایز استاندارد جا بشه
نرم افزارهایی مثل فتوشاپ چطور اینکار رو انجام می دهند؟

razavi_university
پنج شنبه 16 خرداد 1387, 12:09 عصر
راه حلی که به ذهنم رسید اینه که بر اساس سایز فرم عکس های جداجدا از فرمم بگیرم و بعد اون عکس رو ذخیره کنم یا بفرستم به پرینتر (حداقل وقتی یک عکس از کل فرم باشه میشه سایزش رو کوچک کرد تا اندازه پرینت بشه )
ولی چطوری میشه فرم رو تنظیم کرد که هردفعه یک قسمت هایی از فرم رو نشون بده یعنی بتونیم Scroll رو جابجا کنیم؟

haghft
پنج شنبه 16 خرداد 1387, 21:41 عصر
در Microsoft Visual Studio 2008 کامپاننتی به نام PrintForm وجود داره که میتونید با اون از فرم پرینت بگیرید و حالت آپشن اونو رو Scrollable بگذارید.

razavi_university
جمعه 17 خرداد 1387, 01:34 صبح
در Microsoft Visual Studio 2008 کامپاننتی به نام PrintForm وجود داره که میتونید با اون از فرم پرینت بگیرید و حالت آپشن اونو رو Scrollable بگذارید.


دوست عزیز من نتونستم پیداش کنم
می تونی ادرس دقیقتر بدی
توی ToolBox که نبود، داخل Componentهای Net. , Com , ... هم نبود

razavi_university
شنبه 18 خرداد 1387, 22:45 عصر
چون راه دیگه ای به ذهنم نرسید تصمیم گرفتم با Scroll کردن عکس بگیرم و عکس هارو بهم بچسبونم ولی این روش هم به شکست خورد! :عصبانی++:
Scroll حرکت نمی کنه :گریه:
از این دستور واسه حرکت دادن Scroll استفاده کرد


AutoScrollPosition.Offset()

haghft
یک شنبه 19 خرداد 1387, 08:43 صبح
در Toolbox گزینه ی Visual Basic PowerPacks گزینه ی PrintForm.
:لبخندساده::لبخندساده::لبخن ساده:

razavi_university
سه شنبه 21 خرداد 1387, 01:26 صبح
روشهای مختلف و کلاسها و کتابخانه های زیادی رو رو تست کردم ولی هر کدوم یه مشکلی داشتند بهترین روشی که پیدا کردم، طراحی مجدد تمامی کنترل های فرم در یک شی گرافیک و نمایش یا چاپ آن است. (ایده این کار رو از سایت C#Corner گرفتم ولی برنامه اون ناقص بود و من یکم کاملترش کردم:چشمک:)
برنامه ی نمونه ای که گذاشتم روش عکس گرفتن از فرم و چاپ اون به دو روش رو داره(برای مقایسه دو روش) البته برنامه هنوز ناقصه و یکم کار داره تا کامل بشه :لبخند:
ولی تا اونجایی که واسه اش نوشتم Scroll تاثیری روش نداره و همه کنترل های فرم رو در برمی گیره (بر خلاف C#Corner که فقط برای چند کنترل استاندارد بود) در واقع برنامه ای که گذاشتم کنترل های استاندارد رو می کشه و کنترل هایی که واسش تعریف نکردم رو نمی کشه و فقط یک عکس ازشون می گیره و اضافه می کنه
امیدوارم دوستانی که مشکل مشابهی دارند بتونن از این روش استفاده کنند

بابت کد نویسی بد و بهم ریخته اش پیشاپیش معذرت می خوام چون یک برنامه تسته و مدام چیز های مختلف روش تست میشدند و قبلی ها کامنت می شدند:اشتباه:

ali_kolahdoozan
سه شنبه 21 خرداد 1387, 08:23 صبح
روي مثلا gridview تست كردي ؟ ركوردهاي توش با scrol چي ميشن ؟ راستي توي code project من 1 سال پيش كه لازم داشتم يك چيزهايي بود يكيش بدك نبود يك نگاهي بنداز

razavi_university
سه شنبه 21 خرداد 1387, 11:30 صبح
نه متدي كه من فعلا نوشتم صرفا روي فرم ها كار مي كنه و كنترل هاي اون رو مي كشه
براي DataGrid و يا ... كلاسهايي نوشته شده كه اگه به كد من نگاه كنين دو نمونه اش داخل كامنتها هستند(همون مثالهاي CodeProject هستند)