PDA

View Full Version : خروجی کارت گرافیک



navidkhalilian
شنبه 26 تیر 1389, 06:05 صبح
سلام دوستان.من می خوام خروجی کارت گرافیک رو داخل یک picturebox نمایش بدم.مثل اینکه از صفحه نمایش عکس بگیرم و اونو داخل یک picturebox نمایش بدم.می خوام بدونم بدون عکس گرفتن از صفحه نمایش میشه خروجی را داخل یک picturebox نمایش داد؟مرسی از کسانی که قراره کمک کنند.

vbworm
شنبه 26 تیر 1389, 12:00 عصر
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
Timer1.Interval = 10
EndSub

PrivateFunction CaptureScreen() As Image
Dim screenSize As Rectangle = Screen.PrimaryScreen.Bounds
Dim target AsNew Bitmap(screenSize.Width, screenSize.Height)
Using g As Graphics = Graphics.FromImage(target)
g.CopyFromScreen(0, 0, 0, 0, New Size(screenSize.Width, screenSize.Height))
EndUsing
Return target
EndFunction

PrivateSub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
PictureBox1.Image = CaptureScreen()
EndSub

mohammad.moosaei
شنبه 26 تیر 1389, 16:12 عصر
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
Timer1.Interval = 10
EndSub

PrivateFunction CaptureScreen() As Image
Dim screenSize As Rectangle = Screen.PrimaryScreen.Bounds
Dim target AsNew Bitmap(screenSize.Width, screenSize.Height)
Using g As Graphics = Graphics.FromImage(target)
g.CopyFromScreen(0, 0, 0, 0, New Size(screenSize.Width, screenSize.Height))
EndUsing
Return target
EndFunction

PrivateSub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
PictureBox1.Image = CaptureScreen()
EndSub



حالا اگه این کد دوستمون رو با استفاده از Threading بتونیم به صورت متوالی هر 10ms اجرا کنیم و اونو توی PictureBox بزاریم ، یک فیلم مستقیم از صفحه نمایش رو نشون میده .:لبخند:

vbworm
یک شنبه 27 تیر 1389, 00:42 صبح
:قلب::تشویق:

navidkhalilian
چهارشنبه 30 تیر 1389, 16:08 عصر
دوست عزیز مثل اینکه اصلا سوال منو نخوندی من گفتم بدون عکس گرفتن از صفحه نمایش.اگه این کد را بزار توی یک تامپر 10 میلی ثانیه ببین cpu 100% کار میکنه.من نمی خوام عکس بگیرم می خوام از اون قسمت از حافظه که مربوط به کارت گرافیک هست استفاده کنم

navidkhalilian
جمعه 01 مرداد 1389, 16:15 عصر
اساتید سایت پس کجایید.همینطوری اسم خودتون رو گزاشتید اساتید و مدیر بخش.مدیریت سایت خیلی ضعیف شده

محسن شامحمدی
جمعه 01 مرداد 1389, 19:08 عصر
دوست عزیز راه هایی که آقایون گفتند که خیلی خوب بود شما مشکلتون چیه؟

hero4000
شنبه 02 مرداد 1389, 08:17 صبح
اساتید سایت پس کجایید.همینطوری اسم خودتون رو گزاشتید اساتید و مدیر بخش.مدیریت سایت خیلی ضعیف شده

دوست عزيز اينجا کسي ملزم به پاسخگويي به شما نيست لطفا حرمتها را حفط کنيد :عصبانی:

navidkhalilian
شنبه 02 مرداد 1389, 15:36 عصر
درسته شما ملزم به پاسخگویی نیستید اما با پاسخ دادن بوده که سایت برنامه نویس رشد کرده و منم فکر نمی کنم حرمت کسی رو شکسته باشم.من گفتم مدیران سایت خیلی ضعیف عمل می کنند.کاربر بدون اینکه سوال رو بخونه جواب میده و هدفش از این کار اینه که رتبه خودش رو بالا ببره اما نمیدونه با این کار فقط داره سایت رو ضعیف میکنه.در ضمن من فکر نمی کنم شما مدیر اینجا باشید که بهتون برخورده.

من از 09111111111 (http://barnamenevis.org/forum/member.php?u=59254) تشکر میکنم که حداقل، سوالی که پرسید منطقی بود.مشکل من اینه که کد بالا برای عکس گرفتن از صفحه هست و اگر او رو داخل یک تایمر بزاریم(یا thread) اونموقع cpu 100% کار میکنه.من می خوام خروجی کارت گرافیک رو از حافظه بخونم نه اینکه از صفحه نمایش عکس بگیرم.مرسی

navidkhalilian
یک شنبه 03 مرداد 1389, 16:33 عصر
هنوزم کسی نتونسته در مورد این موضوع جواب پیدا کنه؟

Shahram_Shobeiri
دوشنبه 04 مرداد 1389, 07:43 صبح
تا اونجا که من می دونم ویندوز (مثل داس) اجازه دسترسی مستقیم به ویدئو مموریش رو نمی ده. من یه سرچ زدم و به این نتیجه رسیدم که یکی از راه های کپچر کردن اسکرین استفاده از API ها است که فکر کنم از اشیای دات نت سریع تر باشند. تو لینک زیر یه نمونه استفاده از API ها برای اسیر کردن(:لبخند:) صفحه نمایش آورده شده!
http://www.codeguru.com/Csharp/Csharp/cs_graphics/screencaptures/article.php/c6139

Shahram_Shobeiri
دوشنبه 04 مرداد 1389, 07:45 صبح
اینو هم یه نگاه بندازی بد نیست
http://www.codeproject.com/KB/GDI/barry_s_screen_capture.aspx

navidkhalilian
دوشنبه 04 مرداد 1389, 23:57 عصر
ممنون از اینکه وقت گزاشتید برای کمک به من.میشه بگید حالا که نمیشه از ویندوز اینکار رو انجام داد و طبق گفته خودتون از طریق داس این کار رو انجام بدم؟

Shahram_Shobeiri
سه شنبه 05 مرداد 1389, 23:01 عصر
باید بگم که برای دسترسی به ویدئو مموری داس باید سیستم رو با داس ران کنید و cmd یا dos box جواب نمیده. فکر نکنم این کار(کپچر کردن اسکرین داس) مد نظر شما باشه اما اگه هست بگید که کد c یا pascal بگذارم

navidkhalilian
دوشنبه 11 مرداد 1389, 14:29 عصر
دوست من بر اساس اطلاعاتی که دارم میدونم خروجی کارت گرافیک در حافظه ram ذخیره میشه اما من نمیدونم چطوری اونو بخونم.آیا حالا می تونید به من کمک کنید؟

Shahram_Shobeiri
دوشنبه 11 مرداد 1389, 15:16 عصر
بله. اما همونطور که گفتم سیستم عامل (به عنوان مدیر منابع سیستم) اجازه دسترسی به اون بخش از حافظه رو که معروف به video memory است به سایرین نمی دهد.

navidkhalilian
سه شنبه 12 مرداد 1389, 20:57 عصر
اصلا یه سوال یه برنامه مثل netsopport school چطوری مانیتور کلاینت ها رو میبینه.البته اینو بگم اگه می خوای بگی عکس میگیره و میفرسته اشتباهه چون اون عکس نمیگیره.حالا میتونید کمک کنید؟؟؟؟

pirmard
چهارشنبه 13 مرداد 1389, 09:56 صبح
اصلا یه سوال یه برنامه مثل netsopport school چطوری مانیتور کلاینت ها رو میبینه.البته اینو بگم اگه می خوای بگی عکس میگیره و میفرسته اشتباهه چون اون عکس نمیگیره.حالا میتونید کمک کنید؟؟؟؟

عکس میگیره . علت سرعت بالاش هم اینه که عکسها رو به دیسک سخت منتقل نمی کنه بلکه تو رم پردازشها رو انجام میده.

Navid Asadi
چهارشنبه 13 مرداد 1389, 13:14 عصر
میدونم این جواب سوالت نیست ولی شاید لازم نباشه 30 فریم درثانیه عکس بگیری تا برنامه کند بشه!

navidkhalilian
پنج شنبه 14 مرداد 1389, 19:16 عصر
1- منم عکس رو داخل رم پردازش میکنم
- حجم عکس من 4kb هست.
3- موقعی سیستم کند میشه که از صفحه عکس گرفته میشه یعنی تا وقتی عکس گرفته نشه cpu 1% هم نمیشه.
حالا کمک کنید.مرسی

navidkhalilian
یک شنبه 17 مرداد 1389, 12:10 عصر
سلام دوستان کسی نمی تونه کمک کنه؟یا راهنمایی؟؟؟؟تاپیک رو همراهی کنید.لطفاً

navidkhalilian
سه شنبه 19 مرداد 1389, 13:05 عصر
یعنی هیچ کس نیست که بتونه کمک کنه؟؟؟؟

Shahram_Shobeiri
سه شنبه 19 مرداد 1389, 13:12 عصر
یه نرم افزار هست به اسم jing که تحت دات نت نوشته شده و اسکرین کپچر میکنه. فکر کنم اگه یه سرچی در مورد این نرم افزار و روش کارش بزنی بتونی به نتایجی برسی

Shahram_Shobeiri
سه شنبه 19 مرداد 1389, 14:52 عصر
بیا آقا، اونقدر سریش بازی درآوردی (شوخی) که برنامه رو برات نوشتم. البته با کپی کاری از اینترنت. با رعایت کپی رایت!!!
البته کد به C# نوشته شده. چون همونطور که گفتم محصول کپی کاریه و چون وقت ندارم (همینطوری یه ساعت وقت گرفت) فرصت نکردم به vb.net تبدیلش کنم.
حجم کدش کمه و تبدیل کردنش سه سوته انجام میشه.

navidkhalilian
چهارشنبه 20 مرداد 1389, 20:41 عصر
سلام دوست من.میشه سورس رو به ..net 2005 یا 2008 تبدیل کنی؟ممنون میشم اگه این کارو واسم انجام بدی.