PDA

View Full Version : BitBlt & taking pic



Taha_u
چهارشنبه 25 آذر 1383, 18:17 عصر
سلام
من در برنامه ای که دارم در منو دکمه save ی است که با کلیک کردن اون از بخشی از فرم عکس گرفته میشه و البته قبل از اون نیز با یه dialog box نیز یه آدرس برای save کردن تصویر میگیره ، اما مشکل اینه که یه چیزایی فهمیدم و اونا اینه که:

1- اگه شی ای او که hDc اون رو برای گرفتن عکس پاس می دهیم (که در اینجا یه picture box است) خاصیت Autoredraw آن true باشد عکس را از همان شی میگیرد. ولی من روی فرمم چیزای دیگه ای هم هس مثلا چند تا picture box دیگه که عکسای اورو هم میخوام.

2- و اگر هم آنرا false کنم درست میشه و از کل منطقه ای که می خوام عکس میگیره اما یه چیز و اونم اینکه : گاهی اوقات به علت هنگ موقتی (چند لحظه ای) یا کم بودن سرعت کامپیوتر اون dialog box توی عکس گرفته شده میاد و من فهمیدم که آها ... اصلا BitBlt هم داره print screen میگیره.
این مشکل رو زمانی هم که یه چیزی به صورت Always On Top روی فرم باشه شاید بتونیم بهتر ببینیم(البته این آخری رو خودم امتحان نکردم اما فکر میکنم اونم همین مشکل رو داشته باشه.

دیگه زیاد خستتون نمی کنم اگه قابل فهم نبود بگید تا بیشتر از این(!) بگم.

هر کی هر چی کمک میتونه بکنه....

mohsengrisly
پنج شنبه 26 آذر 1383, 00:51 صبح
بیشتر بگویید ممنونم
اما من طلب کاملی را در مورد گرفتن عکس وذخیره اون چند وقت پیش دیدم
می گردم براتون پیداش می کنم
نمی دونم کی پست کرده بود ولی مطلب خوبی بود :موفق:

Taha_u
پنج شنبه 26 آذر 1383, 08:09 صبح
لطفا بگید کجاشو نفهمیدید تا من بیشتر توضیح بدم
مشکل اصلی این است که BitBlt اون طوری که متوجه شدم print screen میگیره و اگر در زمان عکس گرفتن چیزی روی فرم باشه از اون هم عکس میگیره.
بازم هر کجاش که نا مفهوم بود بگید که در خدمتیم
:thnx:

Behrouz_Rad
پنج شنبه 26 آذر 1383, 12:09 عصر
سلام.
به شرط اینکه آقای Mohenrisly ناراحت نشن بگم: این که معلومه. شما تازه متوجه شدین؟؟؟
<span dir=ltr>
The BitBlt function performs a bit-block transfer of the color data corresponding to a rectangle of pixels from the specified source device context into a destination device context.
</span>
:wise1:

Taha_u
پنج شنبه 26 آذر 1383, 19:38 عصر
بهزاد جان منظورت چیه؟
:گیج: :flower:

mohsengrisly
پنج شنبه 26 آذر 1383, 19:55 عصر
سلام.
به شرط اینکه آقای Mohenrisly ناراحت نشن بگم: این که معلومه. شما تازه متوجه شدین؟؟؟

The BitBlt function performs a bit-block transfer of the color data corresponding to a rectangle of pixels from the specified source device context into a destination device context.

اولا من ناراحت نمی شم گویا شما هنوز از حرف من ناراحت هستید :embr:
اگز هم اسمی از کسی می بری حد اقل اسمشو درست بنویس :mrgreen:
Mohenrisly = MOHSENGRISLY
:confy2: :confy2: :confy2:

mohsengrisly
پنج شنبه 26 آذر 1383, 20:01 عصر
شما میتوانید قسمتی از تصویر را در حافظه بار گذاری کنید البته اگر فرم شما ثابت با شد که خب خیلی بهتره
با دادن مختصات ابتدا وانتها ی قسمت مورد نظر ان را وارد حافظه می کنید وبعد هم هرکاری که می خواهی...
بیشتر یادم نیست :embr:
هنوز مطلبی رو که گفتم پیدا نکردم .شما هم جستجو کنید شاید شانس شما از من بیشتر بود :wink:

Taha_u
جمعه 27 آذر 1383, 01:36 صبح
Notic: فرم دارای چند تا picture box و چند تا بند و بساط دیگس
و اگر هم منظورتون چک کردن و save کردن Twip به Twip (یا اصلا Pixel به Pixel ) تصویر است که یه بار برای یه کار دیگه مجبور شدم این کارو بکنم و اینقدر زمانبر بود که ...
mohsengrisly جان اگه منظورتو درست متوجه نشدم بیشتر روشنمون کن.
:موفق: :oops: :thnx:

Behrouz_Rad
شنبه 28 آذر 1383, 15:25 عصر
:mrgreen:

حامد مصافی
یک شنبه 29 آذر 1383, 11:18 صبح
مشکل اصلی این است که BitBlt اون طوری که متوجه شدم print screen میگیره و اگر در زمان عکس گرفتن چیزی روی فرم باشه از اون هم عکس میگیره.


عزیز ، معلومه که شما hDc دسکتاپ رو به دست می آرین و بعد از دسکتاپ عکس می گیرین نه از فرم مورد نظر :wink:

Taha_u
دوشنبه 30 آذر 1383, 16:31 عصر
سلام دوست عزیز
با عرض پوزش از دیر شدن جوابی که به راهنمایی تون میدم
من منظورتون رو از اینکه میگین که من دسکتاپ رو به دست می آرم رو متوجه نمی شم
اما من بارها این کار رو با picture box های مختلفی که روی فرم بود انجام دادم و نتایج یکسانی را که در بالا گفتم رو گرفتم .
ممنون از جوابتون :oops:
لطفا دوستان دیگر هم یه کمکی بکنن :embr:

در ضمن همیشه سعی کنیم اگه هم که حق با ماست و می بینیم طرف مقابل کوتا نمی آد ما کوتا بیایم چون حداقل اینجا جای .... نیست. :گیج: :گیج: :گیج:

MassoudVB
سه شنبه 01 دی 1383, 04:40 صبح
آقا چرا از دستور PrintForm استفاده نمیکنی ؟

vbprogramer
سه شنبه 01 دی 1383, 16:57 عصر
عزیزم یه نگاه به این کد بنداز ببین کارتو راه میاندازه یا نه :wink:

روانشناس
سه شنبه 01 دی 1383, 23:25 عصر
بابا کدی رو که نوشتی بذار تا بتونیم اراداشو به کمک دوستای دیگه بگیریم.

Taha_u
چهارشنبه 02 دی 1383, 09:46 صبح
آقا چرا از دستور PrintForm استفاده نمیکنی ؟

سلام
قبلا هم گفتم که در روی فرم چیزای دیگه ای هم هس که نمی خوام print بشه.
ممنون
:wink:

Taha_u
چهارشنبه 02 دی 1383, 09:51 صبح
آقای "vbprogramer" ممنون
کد شما رو هم سریعا در اولین فرصت امتحان می کنم و جوابتون رو میدم
با تشکر فراوان
:reading: :wink:

Taha_u
چهارشنبه 02 دی 1383, 10:41 صبح
سلام دوست عزیز vbprogramer

من منی دونم که این کد رو آیا برای من فرستادید یا نه ؟؟؟
اما اگر برای من بود مشکل من دقیقا همین است (که ای پن کد هم داره)
این کد یه pic از Desktop میگیره و اگر هم در زمان Load شدن فرم چیزی روی فرم باشه (بصورت Always On Top و یا بر اث هنگ موقتی Win) باز هم برنامه از اون عکس میگیره
و مشکل دیگه اینکه اصلا من میخواهم که فرمم عکس بگیره و نه از Desktop ، بصورتی که اگر چیزی را که روی فرم بود را در عکس قرار ندهد .

بازم از توجهتون متشکرم
منتظر جوابتونم

:thnx: :thnx:

Taha_u
چهارشنبه 02 دی 1383, 10:50 صبح
شرمندم MassoudVB
اون موقعی که داشتم جوابتون رو میدادم اصلا حواسم جمع نبود
(چرت جواب دادم)
اما جوابتون :

من نمی خوام print بگیرم و از BitBlt برای Save کردن عکس استفاده می کنم
تا اونجایی که من میدونم با PrintForm میشه از فرم پرینت گرف
Ps : ببخشید که امروز اینقدر من چن بار جواب دادم (چون آخه چن بار Connect شدم )
بازم :sorry: