PDA

View Full Version : عكس گرفتن از بخشي از يك فرم



seyed_farid
سه شنبه 29 آذر 1390, 16:10 عصر
با سلام
من ميخواهم براي برنامه ام كه بصورت مداوم در حال اجراست يك اسكرين سيور بسازم و تصوير بخشي از فرمم را كه حاوي اطلاعات وضعيتي سيستمم مي باشد را عكس بگيرم و آنرا بصورت اسكرين سيور با جايگاه و اندازه رندم در صفحه نمايش بدهم.
قبلاً با دستور GetText كار كردم. حالا آيا براي اين موضوع هم كه ميخواهم تصوير را بگيرم راهي هست؟:تشویق:

سعید صابری
سه شنبه 29 آذر 1390, 19:07 عصر
با کدی که در پست 4 قرار داده بودم میشه

http://barnamenevis.org/showthread.php?317863-%DA%AF%D8%B1%D9%81%D8%AA%D9%86-%D8%B9%DA%A9%D8%B3-%D8%A7%D8%B2-%D9%81%DB%8C%D9%84%D9%85

seyed_farid
پنج شنبه 01 دی 1390, 13:49 عصر
با سلام
اگر اين تصوير گرفته شده را بخواهيد تو يك فرم تو برنامه كه بعنوان ScreenSaver درست كرديم نشون بديم، ظاهراً حتماً بايد AlphaBend فرم ScreenSaver را True قرار بديم. آيا راهي هست كه اگر بخواهيم فرم ScreenSaver حالت AlphaBend نباشه اينكار انجام بشه؟ (با توجه به اينكه فرم ScreenSaver روي فرمها است و دستور بالا از بالاترين فرم صفحه عكس ميگيره و ما هم ميخواهيم كه از فرم زيريش عكس بگيريم)

MohsenB
پنج شنبه 01 دی 1390, 17:07 عصر
سلام

لطفا یه تصور از محیط برنامه و قسمتی که اطلاعات قراره نشون داده بشه و یا ترسیمی از هدفی که میخواید رو بدین .

سعید صابری
پنج شنبه 01 دی 1390, 18:44 عصر
با سلام
اگر اين تصوير گرفته شده را بخواهيد تو يك فرم تو برنامه كه بعنوان ScreenSaver درست كرديم
بستگی داره از چه تکنیکی برای این کار استفاده کرده باشی راه های مختلفی برای انجام این کار وجود داره روش شما چیه؟
شما می توانید از خاصیت TransparentColor استفاده کنید و فرم را محو کنید


BorderStyle:=bsNone;
Brush.Style:=bsClear;
TransparentColor:=True;
TransparentColorValue:=clBlack;

Felony
جمعه 02 دی 1390, 11:07 صبح
الان مشکل چیه ؟ میخواین از یک فرم خاص که زیر فرم دیگه هستش عکس بگیرید ؟ میتونید از متد GetFormImage اون فرم استفاده کنید .

seyed_farid
جمعه 02 دی 1390, 11:48 صبح
ممنون از پاسخهاتون
فكر كنم اين GetFormImage دستور خوبي باشه ولي چطور ميشه فقط تصوير يك ناحيه از فرم را كه كنترل خاصي مثلاً GroupBox قرار داره را گرفت؟
و آيا اگر فرم مزبور مينيمايز و يا مثلا يك قسمتي از فرم از صفحه مانيتور خارج شده باشه( فرم را درگ كرده باشيد كه نصفش رفته بيرون از مانيتور)، آيا باز اين دستور كاربرد داره يا نه؟
:تشویق:

seyed_farid
جمعه 02 دی 1390, 11:51 صبح
ممنون از پاسخهاتون
فكر كنم اين GetFormImage دستور خوبي باشه ولي چطور ميشه فقط تصوير يك ناحيه از فرم را كه كنترل خاصي مثلاً GroupBox قرار داره را گرفت؟
و آيا اگر فرم مزبور مينيمايز و يا مثلا يك قسمتي از فرم از صفحه مانيتور خارج شده باشه( فرم را درگ كرده باشيد كه نصفش رفته بيرون از مانيتور)، آيا باز اين دستور كاربرد داره يا نه؟
:تشویق:

Felony
جمعه 02 دی 1390, 15:28 عصر
فكر كنم اين GetFormImage دستور خوبي باشه ولي چطور ميشه فقط تصوير يك ناحيه از فرم را كه كنترل خاصي مثلاً GroupBox قرار داره را گرفت؟
این متد یک Bitmap به شما تحویل میده که میتونید با استفاده از Canvas و متد CopyRect ناحیه مورد نظر رو ازش استخراج کنید .


و آيا اگر فرم مزبور مينيمايز و يا مثلا يك قسمتي از فرم از صفحه مانيتور خارج شده باشه( فرم را درگ كرده باشيد كه نصفش رفته بيرون از مانيتور)، آيا باز اين دستور كاربرد داره يا نه؟
در هر شرایطی درست کار میکنه .