سلام دوستان
معادل تابع API فوق (BitBlt) در وی بی دات نت چیه ؟
Printable View
سلام دوستان
معادل تابع API فوق (BitBlt) در وی بی دات نت چیه ؟
سلام
نزدیک ترین مشابه تابع زیر است:
System.Drawing.Graphics.CopyFromScreen
در این تابع Source صفحه نمایش است و ثابت است.
تابع زیر را هم به نوعی میتوان مشابه Api مذکور حساب کرد.
System.Drawing.Graphics.DrawImage
شما دقیقاً مشخص کنید که چه چیز را از کجا و به کجا میخواهید کپی کنید، تا بهتر بتوان معادل دات نتی اش را بیان کرد.
من دقیقا می خوام که با استفاده از BitBlt قسمتی از تصویر رو (در یک PictureBox) به یک PictureBox دیگه کپی کنم و سپس Mask اون رو روی تصویر اعمال کنم . این کار رو قبلا در وی بی 6 به راحتی انجام می دادم
سلام
ابزار آلات در دسترس دات نت بسیار گسترده است و هر امکانی در کلی ترین مرتبه اش در نظر گرفته شده.
این خیلی فراتر از وجود یک تابع خاص برای یک کار خاص است وبس.
با این امکانات شما میتوانید خودتان توابع مورد نیازتان را در اشکال مختلف و کارکردهای مختلف تهیه کنید.
مثلاً مشکل شما احتمالاً با این تابع حل میشود.
پارامتر اول تصویر است.کد:Public Function ImgCopy(ByVal img As System.Drawing.Image, ByVal SourceRect As System.Drawing.Rectangle, ByVal DestinSize As System.Drawing.Size) As System.Drawing.Image
Dim ret As New System.Drawing.Bitmap(DestinSize.Width, DestinSize.Height)
Dim DestinRect As New System.Drawing.Rectangle(0, 0, DestinSize.Width, DestinSize.Height)
Using Graph As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(ret)
Graph.DrawImage(img, DestinRect, SourceRect, System.Drawing.GraphicsUnit.Pixel)
End Using
Return ret
End Function
پارامتر دوم محدوده مورد نظر تصویر است (x و y و width و height یک مربع کامل)
پارامتر سوم هم ابعاد تصویر جدید را مشخص میکند.
در مورد ماسک هم، باید دقیقاً مشخص کنید چه جلوه ای مد نظرتان است.
ببینید :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
منظورم اینه که در تصویر ماسک (سمت راستی) هر قسمتی از تصویر سمت چپ رو که می خوایم نشون داده بشه رو سیاه و بقیه جاها رو سفید می کنیم . این طوری حتی اگه عکس BMP هم باشه یه چیزی مثل زمینه شفاف درست می کنیم . اگه خواستید بگید که یه نمونه برنامه (شاید بشه اسمشو یه یازی کوچیک گذاشت) رو که فقط با همین روش نوشتم رو آپ کنم .
راستی همون طور که گفتم تمام این کارها رو در وی بی 6 فقط با همون BitBlt میشه انجام داد، یعنی تمام این کارها توسط یه تابع Api
بهتر دیدم که آپلود کنم :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
برای کسانی که ویژوال بیسیک ندارن ممکنه در اجرا مشکل پیدا کنن که اگر پیدا کردن فایل زیر رو دانلود کنن و فایل داخل اون در فولدر برنامه بریزن.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سلام
اگر واقعاً احساس میکنید که تابع API فوق حلال مشکلات شما است، خوب بفرمائید.
اشاره گر Graphic را میتوانید با GetHdc به دست اوریدکد:Public Declare Function BitBlt Lib"gdi32.dll"Alias"BitBlt" (ByVal hDestDC As System.IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As System.IntPtr, ByVal xSrc As Integer, ByVal ySrc As Integer, ByVal dwRop As Integer) As Integer