Posts

Showing posts from 2014

Retrieves The Default User's Directory Path

 Introduction To receive the path of the user's default directory, the following function(s) may be applied.     Public Shared Function GetDefaultDirectory() As String         Dim txt As String = ""         Dim paths As String() = Environment.GetFolderPath(Environment.SpecialFolder.Personal).Split(New Char() {"\"c})         For i As Integer = 0 To paths.Length - 2             txt = txt & paths(i) & "\"         Next         Dim defaultDirectory As String = Nothing         Try             If Not Directory.Exists(txt) Then                 Directory.CreateDirectory(txt)             End If             defaultDirectory = txt         Catch ex As Exception             If TypeOf ex Is IOException AndAlso TypeOf ex Is UnauthorizedAccessException AndAlso TypeOf ex Is ArgumentException Then                 defaultDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal)             End If         End Try         Return defaultDirectory  

Detect Image is upside Down

The following function may used to detect if an image is upside down or not. The function will check the BitmapData.Stride value and returned value is of a Boolean type and if the returned value of BitmapData.Stride is greater than zero...then the bitmap is upside down. For further details about BitmapData Class, please check the link Link Function:     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 Usage:          ' Define the image         Dim bmp As New Bitmap(My.Resources._29322)         ' pass the image to the function        If IsUpSideDownBitmap(bmp) Then            ' If re

Generic Disposal (Of T) Tips & Tricks

Tips/Tricks  The following code example shows a custom generic disposal     Public Sub DisposeObjects(Of T As IDisposable)(ByRef disposableObject As T)         Dim disposable As IDisposable = CType(disposableObject, T)         disposableObject = CType(Nothing, T)         If (disposable IsNot Nothing) Then             disposable.Dispose()         End If     End Sub Usage: Dim any as Foo = New Foo DisposeObjects(CType(any, Foo))  

IEnumerable Aggregate, Accumulator Function in VisualBasic.Net

I like Generics so much because it saves a lot of my time. The following code example demonstrates how to use IEnumerable Aggregate and build some useful functions. Example No. (1): May be used to calculate the totals of integers      Public Shared Function AcumulateIntegers(source As IEnumerable(Of Integer)) As Integer         Return source.Aggregate(New Func(Of Integer, Integer, Integer)(AddressOf AddInteger))     End Function     Private Shared Function AddInteger(a As Integer, b As Integer) As Integer         Return (a + b)     End Function Usage:  Dim total As Integer = AcumulateIntegers(New List(Of Integer) From {1, 2, 3, 4, 5, 6, 7, 8}) Example No. (2): Might used to union some rectangles     Public Shared Function UnionRectangles(source As IEnumerable(Of Rectangle)) As Rectangle         Return source.Aggregate(New Func(Of Rectangle, Rectangle, Rectangle)(AddressOf Rectangle.Union))     End Function Usage:         Dim rectA As Rectangle = New Rectangle(0, 0, 2

Why My Thread Safe Generic List Collection not Respect My Enumerator ??!!!

 Introduction Enumerating through a collection is not a thread safe, Is it real ? this question is knocking my head since saw this subject in MSDN ( Link ) and subsequently more questions & ideas starts  in my mind. The real question was, why shall use thread safe collection? according to Microsoft, the answer was simple, it is for better and faster performance, however my understanding is also simple; all property and methods within the generic class shall be written using SyncLock, hope I'm correct, and here it is the code.. Public Class RiverNileList(Of T)     Implements IList(Of T) #Region " RiverNileList (of T) " #Region " Field "     Friend _lock As Object = CType(Nothing, Object)     Friend _list As List(Of T) = CType(Nothing, List(Of T)) #End Region #Region " Constructor "     Public Sub New()         Me.New(New Object)     End Sub     Friend Sub New(obj As Object)         Me._lock = obj     End Sub #End R

مقال: أفكار في الجرافكس ....... الجزء الثاني Graphics Ideas in VisualBasic.Net Part 2

في الكود الخاص بالمثال الثالث الي الخامس في الجزء الأول يوجد بعض القصور وهي كالتالي 1- إهتزاز الرسم أثناء عملية تحريك المستطيل 2- عند الضغط علي الفورم في اي ماكن بالمثال الثالث يتم تحريك المستطيل 3- عند الضغط علي الفورم في يمين أو يسار المستطيل بالمثال الرابع يتم تحريك المستطيل 4- عند الضغط علي الفورم في أعلي أو أسفل المستطيل بالمثال الخامس يتم تحريك المستطيل 5- عند تحريك المستطيل خارج أبعاد الفورم يبدأ المستطيل في الاختفاء ملحوظة : حاول عزيزي القارئ أن تجد حلولا لمثل هذه المشاكل وحاول أيضا أن تستخدم شكلا هندسيا أخر غير المستطيل ..... وذلك قبل أن تقرأ باقي الموضوع ألا يذكرك الكود الموجود أعلاه بأي كونترول تستخدمه علي سبيل المثال TrackBar أو ScrollBar وهذا يعود بنا إلي بداية الموضوع وهو أن مجموعة أفكار صغيرة سوف تؤدي الي بناء فكرة كبيرة في الكود الذي استخدمناه في المثال الثالث الي الخامس الأول كان هناك بعض القصور وفي الأمثلة التالية سوف نحاول التخلص من هذا القصور في الكود   لكي نتخلص من Flicker أو من الإهتزازات التي نراها أثناء عملية تحريك الشكل الهند

مقال: أفكار في الجرافكس ....... الجزء الأول Graphics Ideas in VisualBasic.Net Part 1

مقدمـــــة غالبا ماتكون الأفكار الكبيرة ماهي إلا مجموعة من الأفكار الصغيرة التي تتجمع معا لتشكل هذه الأفكار الكبيرة وفي هذه الأجزاء عن الجرافكس سنحاول أن نغطي مجموعة من الأفكار الصغيرة التي من الممكن أن نستفيد منها لاحقا في بناء فكرة كبيرة عالم GDI+ المهتمين بالرسم أو بالجرافكس بشكل عام يعلمون جيدا معني كلمة +GDI وأيضا يعلمون جيدا كيف يستخدمون الأوامر الخاصة بمكتبة +GDI لرسم الأشكال الهندسية المختلفة أو رسم الصور أو أي شئ أخر علي الفورم أو علي الكونترول لذلك نحن هنا لن نناقش كيف نرسم بل سوف نناقش كيف نستفيد ونطور من عمليات الرسم المختلفة وبالتالي نستفيد منها في بناء ما نريده الفكرة الأولي : الفكرة الأولي التي سوف نتحدث عنها اليوم هي رسم أي شكل هندسي ومن ثم نقوم بتحريك هذا الشكل الهندسي باستخدام الماوس في اي إتجاه نريده والمجموعة التالية من الأمثلة سوف توضح كيفية عمل ذلك المثال الأول : لكي نرسم أي شكل هندسي علي الفورم ولنأخذ المستطيل كمثال غالبا ما نحتاج الي تعريف نقطة بداية عملية الرسم وأيضا أبعاد هذا المستطيل اي أننا نحتاج الي تعريف Location وأيضا Si