PDA

View Full Version : گرفتن تصویر فرم!



arash1718
جمعه 20 مهر 1386, 15:54 عصر
حتما متوجه شدید که وقتی صفحه shutdown ویندوز باز میشود عکسی از screen میگیره و سیاه سفیدش میکنه! چه جوری میشه این کارو کرد؟(search هم کردم)
__________________
یا حق !

amirsajjadi
شنبه 21 مهر 1386, 07:56 صبح
سلام
این برنامه گرفتن عکس از صفحه نمایشه ولی نمیدونم چجوری باید اونو سیاه سفید کرد

amirsajjadi
شنبه 21 مهر 1386, 09:05 صبح
سلام دوباره
اینم یک راه دیگش

Easy_Systems
شنبه 21 مهر 1386, 11:22 صبح
با سلام دوست عزیز
برای اینکار من دو روش رو می دونم
1- روش اول که هم ساده تره و هم خودم ازش استفاده می کنم اینه که وقتی که روی دگمه خروج کلیک می کنی خاصیت بک گراند تمام کنترلهای فرم و خود فرم رو به رنگه دلخواه در بیاریو اگه عکسی هم روی فرم هست قبلا اونو با فتوشاپ سیاه سفید کرده باشی و به برنامت اضافه کرده باشی تا اونو به جای عکس رنگی لود کنی


2- روش دوم که برنامه نویسی بیشتری می خواد اینه که از کدهایی که قبلا تو همین سایت آپلود شده استفاده کنی و با فشردن دگمه خروج با تابع مربوط به سیاه سفید کردن فرم یه عکس سیاه سفید از کل فرکم بگیری و اونو نمایش بدی

فکر کنم کامل توضیح دادم
موفق باشی

saeed_rezaei
یک شنبه 22 مهر 1386, 22:47 عصر
سلام. مثل اینکه دوستان روش تهیه تصویر از فرم رو گفتن. دیگه لازم نیست اونو بگم.
برای سیاه سفید کردن یک تصویر دو راه وجود داره.
اول اینکه رنگ هر پیکسل رو گفته، میانگین رنگ رو محاسبه و دوباره مقدار دهی کنید که روش وقت گیری هست.
روش دوم روش استفاده از colormatrix هست که سرعتش هم بالاست . برای این کار دوتا تابع می نویسم. هر دوتا تابع باید توی فرم باشن اما دقت کنید که شما فقط باید تابع اولی رو یعنی grayscale رو فراخوانی کنید و تصویر مورد نظر رو بهش بدید. خروجی تابع فوق هم تصویر سیاه سفید هستش.
تابع اول:



Public Function grayscale(ByVal img As Image) As Image


Dim cm As ColorMatrix = New ColorMatrix(New Single()() _
{New Single() {0.299, 0.299, 0.299, 0, 0}, _
New Single() {0.587, 0.587, 0.587, 0, 0}, _
New Single() {0.114, 0.114, 0.114, 0, 0}, _
New Single() {0, 0, 0, 1, 0}, _
New Single() {0, 0, 0, 0, 1}})

Dim cm2 As ColorMatrix = New ColorMatrix(New Single()() {New Single() {0.299, 0.299, 0.299, 0, 0}, New Single() {0.587, 0.587, 0.587, 0, 0}, New Single() {0.114, 0.114, 0.114, 0, 0}, New Single() {0, 0, 0, 1, 0}, New Single() {0, 0, 0, 0, 1}})




Return draw_adjusted_image(img, cm)

End Function



تابع دوم:



Private Function draw_adjusted_image(ByVal img As Image, _
ByVal cm As ColorMatrix) As Image


Try
Dim bmp As New Bitmap(img) ' create a copy of the source image
Dim imgattr As New ImageAttributes()
Dim rc As New Rectangle(0, 0, img.Width, img.Height)
Dim g As Graphics = Graphics.FromImage(img)

' associate the ColorMatrix object with an ImageAttributes object
imgattr.SetColorMatrix(cm)

' draw the copy of the source image back over the original image,
'applying the ColorMatrix
g.DrawImage(bmp, rc, 0, 0, img.Width, img.Height, _
GraphicsUnit.Pixel, imgattr)

g.Dispose()

Return img

Catch
Return img
End Try

End Function

amirsajjadi
دوشنبه 23 مهر 1386, 12:37 عصر
آقا دستت درد نکنه ولی اگه میشه یک توضیحی در مورد کار توابع و اون اعدادی که به تابع ماتریکس دادی بده