تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
التعامل مع الصور Images في بيئة الدوت نت باستخدام +GDI - الجزء السابع
#1
كاتب الموضوع : silverlight

التعامل مع الصور Images في بيئة الدوت نت باستخدام +GDI
اللغة المستخدمة: الفيجوال بيسك
التطبيق: فيجوال استوديو 2005 و 2008
المستوي: التقييم متروك للقارئ
إعداد: مهندس / عمر أمين إبراهيم

الجزء السابع: كيف نرسم الصورة مائلة Skew

رسم الصورة بشكل مائل أو عمل Skew للصورة مبني علي فكرة بسيطة جدا وهي أننا نقوم بتعريف الصورة ثم نقوم بتعريف صورة جديدة لها نفس أبعاد الصورة الأصلية ثم نقوم بتعريف مستطيل Rectangle من الصورة الجديدة ثم نقوم بتحديد مجموعة من النقاط Points داخل هذا المستطيل ثم نرسم الصورة الأصلية داخل حدود هذه النقاط والكود التالي يوضح كيفية عمل ذلك
ولتنفيذ الكود افتح مشروع جديد وأضف له PictureBox ثم أضف صورة للمشروع ثم في الحدث Load للفورم اكتب الكود التالي


كود :
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim m_image As New Bitmap(My.Resources.imgsrv)

Dim bmp As New Bitmap(m_image.Width, m_image.Height, m_image.PixelFormat)
Using g As Graphics = Graphics.FromImage(bmp)

Dim rect As Rectangle = New Rectangle(0, 0, bmp.Width, bmp.Height)
Dim x As Integer = 120
Dim y As Integer = 80

Dim offset As Size = New Size(x, y)

Dim points As Point() = New Point() {New Point(rect.Left + offset.Width, rect.Top + offset.Height), New Point(rect.Right, rect.Top + offset.Height), New Point(rect.Left, rect.Bottom - offset.Height)}

g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality
g.DrawImage(m_image, points)

End Using

PictureBox1.Image = bmp
PictureBox1.SizeMode = PictureBoxSizeMode.CenterImage

End Sub

End Class
ستلاحظ في الكود أعلاه أن القيمة x والقيمة y تحددان درجة ميل الصورة
و الأن لنبني دالة Function من الكود أعلاه وسنطلق عليها اسم SkewImage Function
وسيكون شكل الدالة كالتالي


كود :
Public Shared Function SkewImage(ByVal bitmap As Bitmap, ByVal offsetWidth As Integer, ByVal offsetHeight As Integer) As Bitmap

Dim bmp As New Bitmap(bitmap.Width, bitmap.Height, bitmap.PixelFormat)

Using g As Graphics = Graphics.FromImage(bmp)

Dim rect As Rectangle = New Rectangle(0, 0, bmp.Width, bmp.Height)
Dim offset As Size = New Size(offsetWidth, offsetHeight)

Dim points As Point() = New Point() {New Point(rect.Left + offset.Width, rect.Top + offset.Height), New Point(rect.Right, rect.Top + offset.Height), New Point(rect.Left, rect.Bottom - offset.Height)}

g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality
g.DrawImage(bitmap, points)

End Using

Return bmp

End Function
الكود التالي يوضح كيفية استخدام الدالة SkewImage Function


كود :
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim m_image As New Bitmap(My.Resources.imgsrv)
Dim ImageSkewed As Bitmap = SkewImage(m_image, 30, 50)

PictureBox1.Image = ImageSkewed
PictureBox1.SizeMode = PictureBoxSizeMode.CenterImage

End Sub

Public Shared Function SkewImage(ByVal bitmap As Bitmap, ByVal offsetWidth As Integer, ByVal offsetHeight As Integer) As Bitmap

Dim bmp As New Bitmap(bitmap.Width, bitmap.Height, bitmap.PixelFormat)

Using g As Graphics = Graphics.FromImage(bmp)

Dim rect As Rectangle = New Rectangle(0, 0, bmp.Width, bmp.Height)
Dim offset As Size = New Size(offsetWidth, offsetHeight)

Dim points As Point() = New Point() {New Point(rect.Left + offset.Width, rect.Top + offset.Height), New Point(rect.Right, rect.Top + offset.Height), New Point(rect.Left, rect.Bottom - offset.Height)}

g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality

g.DrawImage(bitmap, points)

End Using

Return bmp

End Function

End Class


بالتوفيق

أخوكم عمر
}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  نظرة على DropBox SDK و التعامل معها +برنامج رفع و تحميل ملفات ابو ليلى 4 4,883 08-09-22, 11:54 AM
آخر رد: saif2023
  الجزء الثالث من:كيف تجعل الـ Text Box ذكي!يترجم العمليات الحسابية ويخرج الناتج (الأقواس المتعددة) !! أنس محمود 10 7,845 19-07-22, 12:15 AM
آخر رد: StartLight4000
Video [درس فيديو] تقارير الكريستال ريبورت وتغيير مسار الصور أثناء التشغيل رمضان272 0 1,617 28-03-22, 03:18 AM
آخر رد: رمضان272
  شرح خوارزميات معالجة الصور (من دروس الاستاذ فوزي برزنجي) ناديه الشجيري 19 34,378 20-02-22, 02:13 PM
آخر رد: رضوان الجماعي
  التعامل مع الصور Images في بيئة الدوت نت باستخدام +GDI - مقدمة RaggiTech 3 5,869 30-07-21, 05:14 PM
آخر رد: kebboud
Lightbulb [مقال] التعامل مع ملفات اوفيس من خلال مكتبة NPOI ابو ليلى 2 4,199 01-07-21, 11:42 AM
آخر رد: kebboud
Lightbulb [مقال] التعامل مع اختصارات الملفات Shortcuts Magic Sword 2 4,422 01-10-20, 11:36 AM
آخر رد: abomo3ath
  [مقال] دوال التعامل مع النصوص Strings - VB.NET ابو ليلى 10 25,160 15-04-19, 07:09 PM
آخر رد: alsouf
  Compare Images المقارنة بين الصور Abu Ehab 0 3,276 31-10-18, 04:27 PM
آخر رد: Abu Ehab
  اصنع محرر أكواد خاص بك باستخدام الأداة RichTextBox السكر المغرور 13 7,522 19-08-18, 09:27 AM
آخر رد: elgokr

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم