منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[كود] كيف تكتشف أن الصورة معكوسة - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184)
+--- الموضوع : [كود] كيف تكتشف أن الصورة معكوسة (/showthread.php?tid=3090)



كيف تكتشف أن الصورة معكوسة - silverlight - 03-06-14

يمكن إكتشاف هل الصورة المستخدمة معكوسة باستخدام BitmapDat Class
حيث نتأكد أن قيمة Stride تكون أكبر من صفر

و لمزيد من التفاصيل عن الكلاس BitmapData يمكنك مراجعة اللينك التالي

BitmapData Class

الدالة التالية تسترجع قيمة عبارة عن Boolean

لو كانت القيمة المسترجعة من الدالة تساوي True
إذن الصورة تكون معكوسة في تلك الحالة

و أيضا العكس صحيح لو كانت القيمة المسترجعة من الدالة تساوي False
إذن الصورة في وضعها الطبيعي

الكود التالي يوضح شكل الدالة

كود :
''' <summary>
    ''' Check image is upside down
    ''' </summary>
    ''' <param name="originalBitmap">bitmap</param>
    ''' <returns>True, if the image is upside dwn</returns>
    ''' <remarks></remarks>
    Private Function IsUpSideDownBitmap(originalBitmap As Bitmap) As Boolean
        Dim bmp As Bitmap = CType(originalBitmap.Clone(), Bitmap)
        Dim rect As Rectangle = New Rectangle(0, 0, bmp.Width, bmp.Height)
        Dim bmpData As Imaging.BitmapData = bmp.LockBits(rect, Imaging.ImageLockMode.ReadOnly, Imaging.PixelFormat.Format32bppArgb)
        Return originalBitmap IsNot Nothing AndAlso bmpData.Stride > 0
    End Function

الكود التالي يوضح كيف نرسم الصورة و هي معكوسة

1- حيث نقوم بتعريف صورة كما نشاء - في المثال هنا قمت بإضافة صورة الي Resources المشروع

2- ثم علينا أن نمرر تلك الصورة الي الدالة لكي نتأكد هل الصورة معكوسة أم لا

3- ثم نقوم برسمها علي سطح الفورم في الحدث Paint الخاص ب الفورم

كود :
Dim bmp As New Bitmap(My.Resources._29322)

        ' example 1 : check if image is upside down and draw the image

        ' check image, the function shall return true if the image is upside down
        If IsUpSideDownBitmap(bmp) Then
            ' do something like rotate the image or do not draw it
            ' the image will drawn becuase the function return True
            e.Graphics.DrawImage(bmp, 0, 0)
        End If


أتمني إن الكود يكون مفيدا لكم


RE: كيف تكتشف أن الصورة معكوسة - Omar Mekkawy - 05-06-14

جزاك الله كل خير أستاذي الكريم
موضوع رائع
تحياتي لك