تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] الحصول علي صورة بمقاس معين وجودة معينة من داخل ايقونة
#11
جزاك الله خير
بس الدالة لتحويل صورة الي ايقونة انا اريد العكس
الرد }}}
تم الشكر بواسطة:
#12
يعني انتا عايز عايز تحول الايقونة ل صورة؟؟؟؟؟؟؟؟؟؟؟؟؟ وضح شوية من فضلك
الرد }}}
تم الشكر بواسطة:
#13
ههههههههه والله وضحت حوالي 4 مرات بس مش عارف ايه المشكلة
الله المستعان اسئل االه تعالي ان يفهمني
يا جماعة الايقونة icon هي عبارة عن مجموعة من الصور وليست صورة واحدة
انظر الصورة

الصور مختلفة عن بعضها انا اريد جلب صورة منهم
وهذا موجود بالمثال السابق
الرد }}}
تم الشكر بواسطة:
#14
بعد قراءة المشروع الي في الرابط

ارى انه اعتمد على مكتبات معقدة في النظام

لذلك اضن انه يمكن التحويل الى ابعاد محددة من الايقونة وهي :

16x16
32x32
64x64
128x128
256x256

غير هذه الابعاد لا اضن انها ممكنة


اذا كان هذا يرضيك ساقوم بتجهيز الكود حالا
الرد }}}
تم الشكر بواسطة:
#15
انتظرك اخي محمد
الرد }}}
تم الشكر بواسطة:
#16
أعتذر ......أنا ما كنت شفت البرنامج الموجود ف الكودبروجكت....شوف الصورة حسبما فهمت بتكون عبارة عن شريحة من الصور

الكود ادناه سوف يتعامل مع هذا النوع من الصور بشرط ان الصورة تكون موجودة في Resources الخاصة بمشروعك
عموما طالما تستطيع أن تستخلص الصورة أو إن الصورة بالفعل معك أي شئ أخر سهل جدا بعد ذلك.

الفكرة تنحصر في انك محتاج يكون لديك الصورة في Resources المشروع ثم تجعل Build Action الخاص ب الصورة Embeded

ثم نفذ الخطوات التالية:

1- تعريف Array و هي التي سوف نقوم بتخزين كل الصور بداخلها

كود :
Private images As Image()

2 - تقوم بتعريف الصورة الموجودة في Resources
وممكن تتعامل معها بشكل مباشر
الحقيقة انا أفضل تعريف صورة أخري حيث تكون الصورة الثانية بمثابة clone من الصورة الاصلية

كود :
Dim ResourcesBitmap As Bitmap = My.Resources.ImageStrip_Jpeg
        Dim bmp As Bitmap = CType(ResourcesBitmap.Clone(), Bitmap)

3- تحديد عدد الصور ف الشريحة و غالبا أنت هنا تتعامل مع شريحة افقية بها عدد أفقي من الصور ثم تمرر هذا العدد الي Array الموجودة في الخطوة الأولي

كود :
Dim count As Integer = bmp.Width / bmp.Height
        images = New Image(count) {}

4 - تعريف متغير عبارة عن مستطيل نحدد به أبعاد كل صورة
كود :
Dim rect As Rectangle = New Rectangle(0, 0, bmp.Height, bmp.Height)

5- نقوم بعمل loop لنقرأ الصور الموجودة في شريحة الصور ثم نضيف كل صورة الي مصفوفة الصور

كود :
For i As Integer = 0 To count - 1
            images(i) = bmp.Clone(rect, bmp.PixelFormat)
            rect.X += bmp.Height
        Next

6- الأن مصفوفة الصور بهها كل الصور...أفترض أنك تستطيع الأن استخدام مصفوفة الصور كما تشاء

مثلا ممكن تعرض الصورةالصورة الأولي في المصفوفة في PictureBox مثلا أو تحفظها علي جهاز

كود :
Me.PictureBox1.Image = images(0)

الكود الاجمالي سيكون شكله كالتالي

كود :
Private images As Image()

Dim ResourcesBitmap As Bitmap = My.Resources.ImageStrip_Jpeg
        Dim bmp As Bitmap = CType(ResourcesBitmap.Clone(), Bitmap)
        Dim count As Integer = bmp.Width / bmp.Height
        images = New Image(count) {}

        Dim rect As Rectangle = New Rectangle(0, 0, bmp.Height, bmp.Height)
        For i As Integer = 0 To count - 1
            images(i) = bmp.Clone(rect, bmp.PixelFormat)
            rect.X += bmp.Height
        Next

        Me.PictureBox1.Image = images(0)

عند تنفيذ الكود سيكون بطئ قليلا في البداية
لذلك الأفضل ان يتم كتابة الكود علي هيئة كلاس أو موديول و استخدامه من داخل مشروعك في مشروعك

عموها هذه هي الفكرة بشكل عام
الرد }}}
تم الشكر بواسطة:
#17
تم تكوين الكلاس !



طريقة الاستعمال :-

اولا تستعمل دالة Create لإنشاء كائن ايقونة
ثانيا تستعمل الدالة IconToImage وتعطيها البارمترات المطلوبة (سيظهر لك شرح لكل بارميتار بالعربي)


PHP كود :
string path = @"C:\Program Files\TeamViewer\Version9\TeamViewer.exe";    //you can use also .ico files

            
System.Drawing.Icon icon IconConverter.Convert.CreateIcon(path);
            
Image img IconConverter.Convert.IconToImage(iconIconConverter.IconSize.Size_256true);
            
            
pictureBox1.Image img



بالنسبة للبارميتار الثاني فإنك تعطيه Size الي تبيه .

اما بالنسبة للجودة ، فاني قمت افتراضيا بجلب الدقة الافضل :
كما هو واضح في احد اكواد الكلاس :-
PHP كود :
Icon ic Icons.OrderBy(=> (int)i.GetType().GetField("bestBitDepth" 
                             
System.Reflection.BindingFlags.NonPublic |
                             
System.Reflection.BindingFlags.Instance).GetValue(i)).Last(); 

الكود اعلاه بيجيب bestBitDepth

بمعنى افضل جودة للحجم الي انت اخترته


-

لان جه في بالي انك ماراح تحتاج الى اختيار الجودة لأنك بتستعمل الصور في اداة imagelist

واداة ImageList توجد بها خاصية اسمها ColorDepth حتى تختار جودة الصورة ، فما تحتاج تحدد الجودة في عملية التحويل لانك في النهاية تقدر تتحكم بالجودة من اداة ImageList





___


وايضا بعض الايقونات لايتوفر لها حجم 128 او 256 لذلك وضعت البارميتار الثالث
لتحديد ان اردت جلب اكبر حجم ممكن ان لم يتوفر الحجم الذي اردته او رمي استثناء


الملفات المرفقة
.rar   IconConverter.rar (الحجم : 6.11 ك ب / التحميلات : 57)
الرد }}}
تم الشكر بواسطة:
#18
السلام عليكم، كيف حال الجميع؟
لم أقرأ الردود كلها لضيق الوقت لكن هذا الموضوع قد يساعدكم
http://vb4arb.com/vb/thread-1328.html
في رعاية الله Smile
الرد }}}
تم الشكر بواسطة:
#19
جزاكم الله خيرا اخواني وجعله الله تعالي في موازين حسناتكم مجهودات كبيرة جدا شكرا لكم وهذا المعتاد منكم دائما
اخي محمد ممكن السورس
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  اختصار كود الجمع داخل شبكة البيانات محمد خيري 2 63 أمس, 03:30 PM
آخر رد: محمد خيري
  مشكلة فى Radiobutton عند وضع صورة فيه أبو جودة 3 94 15-04-24, 04:31 AM
آخر رد: Taha Okla
  تعديل كود ارسال صورة الى الواتس new_programer 2 175 21-03-24, 10:07 PM
آخر رد: new_programer
  تعديل طول حقل معين في جميع جداول القاعدة atefkhalf2004 1 108 09-03-24, 03:17 AM
آخر رد: atefkhalf2004
  كيفية جمع أرقام عمود فى الداتا جريد فيو بناءاً على بيانات معينة heem1986 5 246 25-02-24, 11:26 PM
آخر رد: heem1986
  الحذف للسجل بشروط معينة محمد خيري 4 376 05-01-24, 04:46 AM
آخر رد: محمد خيري
  [سؤال] كيفية انشاء فورم داخل مشروعى عاصم النجار 2 323 05-01-24, 12:36 AM
آخر رد: HALIM ELEULMA
  حماية عمود داخل ورقة الاكسل العيدروس 3 195 05-01-24, 12:21 AM
آخر رد: HALIM ELEULMA
Lightbulb [VB.NET] إطهار الصورة بمقاس معين في DataGridView أبو خالد الشكري 2 334 14-12-23, 03:01 PM
آخر رد: أبو خالد الشكري
  هل الداتا قراد فيو تسمح بتعدد الاسطر داخل الخلية عند جلب بيانات نصية طويله من قاعدة ب khalidalwdi 3 472 10-11-23, 11:08 AM
آخر رد: khalidalwdi

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


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