السلام عليكم
إخواني الاعزاء أريد الحصول على
width + height + dimension
الخاص بصورة ما
أرجو أن أجد عندكم كود لهذا الامر وحبذا لو كان بواسطة دوال API
وشكرا
السلام عليكم
إخواني الاعزاء أريد الحصول على
width + height + dimension
الخاص بصورة ما
أرجو أن أجد عندكم كود لهذا الامر وحبذا لو كان بواسطة دوال API
وشكرا
حملها فى Picturebox , أجعل خاصية Autosize على True و :
' StdPicture's Width and Height properties are expressed in ' Himetric units. With Picture1 width = CInt(.ScaleX(.Picture.Width, vbHimetric, vbPixels)) height = CInt(.ScaleY(.Picture.Height, vbHimetric, _ vbPixels)) End With
تم تعديل هذه المشاركة بواسطة msayed2004 في 14 أغسطس 2007 في 15:22
إقرأ معى:
----
المثقفون العرب .. المزورون العرب: تأبين محمود درويش نموذجا
ماذا خسر العالم بانحطاط المسلمين ؟!! للعلامه: أبو الحسن الندوى (كتاب هام لكل مسلم).
المنهجية ومقدمات في الطلب (لطلاب العلم الشرعى)
ما بعرف لماذا api لكن ببساطة
Dim img As StdPicture
img = LoadPicture("yourpic")
Print img.Width
Print img.Heightاو انظر الى المقالة التالية :
السلام عليكم
شكرا إخوان
في الحقيقة أحبذ API لانني في الحقيقة أستعمل دوال API في كل شيء شيء يعني أقوم بكتابة كل شيء
CreateWindowEX و SendMessage و RegisterClassEx إلى آخره
ولكن :
شيء أخير كيف يمكنني الحصول على المعلومات بدون تحميلها في picture Box
هناك binary access ولكنني لا أستطيع الحصول على dimension في المثال المرفق
وهناك أمر آخر هذا المثال يعمل فقط على BitMap يعني *.BMP
أرجو المساعدة ولا زلت أصر على الــ API
شكرا
أكيد هو متوفر لكن تخيل أنك هتحتاج تتعرف على كل Format على حده , و أحيانا الـ Format الواحد بيبقى فيه أختلافات.اقتباسهناك binary access ولكنني لا أستطيع الحصول على dimension في المثال المرفق
إقرأ معى:
----
المثقفون العرب .. المزورون العرب: تأبين محمود درويش نموذجا
ماذا خسر العالم بانحطاط المسلمين ؟!! للعلامه: أبو الحسن الندوى (كتاب هام لكل مسلم).
المنهجية ومقدمات في الطلب (لطلاب العلم الشرعى)
السلام عليكم
أخي الكريم هل عندك أي مثال في الموضوع
شكرا
خش على موقع Wotsit.org و نزل ( أو تتبع رابط ) شرح للـ Format بتاعة اى نوع و ليكن BMP , بص فى الشرح هتلاقة حاجة أسمها BITMAPINFOHEADER , و الـ Header والحاجات دى بنستعمل فيها دوال زى Get , يعنى برضة مش APIs
هو أنت مش عايز تحمل الصور فى اداة ليه ؟
بتعمل DLL مثلا و مش عايز اى Form تكون فيه ؟
إقرأ معى:
----
المثقفون العرب .. المزورون العرب: تأبين محمود درويش نموذجا
ماذا خسر العالم بانحطاط المسلمين ؟!! للعلامه: أبو الحسن الندوى (كتاب هام لكل مسلم).
المنهجية ومقدمات في الطلب (لطلاب العلم الشرعى)
السلام عليكم
في الحقيقة أنا أريد أن أعرف فقط كيفية عمل الامر
كيف يحصل النظام على طول وعرض الصورة
ولكن القصة كلها بدات عندما كنت أحصل على الخطأ عند محاولة استبدال ايقونة البرنامج بواسطة دوال الفيجوال مباشرة
إذا لم تكن الايقونة 16x16 أو 32x32 فهو لا يقبلها ولكن لو استعملت SendMessage مع WM_SETICON لا يحصل أي خطأ
ثم حاولت رسم الايقونة على الفورم وكل هذا يحتاج إلى LoadImage وهذه الدالة تحتاج إلى dimension ولذلك أردت الحصول عليه
واستعماله بدل 16x16 أو 32x32 وحتى GetIconInfo لم تنفع جيدا
آمل أن تفهم ما أريد
المهم
دالة LoadImage مش بتحتاج دائما لتحديد طول و عرض :
اقتباس· cxDesiredSpecifies the width, in pixels, of the icon or cursor. If this parameter is zero and the fuLoad parameter is LR_DEFAULTSIZE, the function uses the SM_CXICON or SM_CXCURSOR system metric value to set the width. If this parameter is zero and LR_DEFAULTSIZE is not used, the function uses the actual resource width.
· cyDesired
Specifies the height, in pixels, of the icon or cursor. If this parameter is zero and the fuLoad parameter is LR_DEFAULTSIZE, the function uses the SM_CYICON or SM_CYCURSOR system metric value to set the height. If this parameter is zero and LR_DEFAULTSIZE is not used, the function uses the actual resource height.
راجع شرح الدالة بالتفصيل هنا LoadImage أو من الـ MSDN
---------------------------------
ملحوظة عن طريقة كتابتك للكود , أنت بتستعمل Function لأى حاجة ليه ؟!
الـ Function تعود بقيمة ( Returns a value ) على عكس الـ Sub اللى المفروض تستخدمه طالما أنك مش هتعود بقيمة.
تم تعديل هذه المشاركة بواسطة msayed2004 في 15 أغسطس 2007 في 14:48
إقرأ معى:
----
المثقفون العرب .. المزورون العرب: تأبين محمود درويش نموذجا
ماذا خسر العالم بانحطاط المسلمين ؟!! للعلامه: أبو الحسن الندوى (كتاب هام لكل مسلم).
المنهجية ومقدمات في الطلب (لطلاب العلم الشرعى)
السلام عليكم
آسف جدا على التأخير
الحقيقة أن الامر لم ينفع لان SM_CYICON أو SM_CXICON ستعيد 32X32 إذا استعملت LR_DEFAULTSIZE
وإذا لم أستعملها تعيد 16X16
عندي سؤال
كيف أقرأ header information للأيقونة ؟
حسب الكلام بيقولك أن أستعملت 0 للـ Parameters دى بدون LR_DEFAULTSIZE , هل جربت تمرر لها 0 ؟!
إقرأ معى:
----
المثقفون العرب .. المزورون العرب: تأبين محمود درويش نموذجا
ماذا خسر العالم بانحطاط المسلمين ؟!! للعلامه: أبو الحسن الندوى (كتاب هام لكل مسلم).
المنهجية ومقدمات في الطلب (لطلاب العلم الشرعى)
استعمل فقط الدالة GetObject بالبرامترت الملائمة
السلام عليكم
نعم جربت الطريقتين المذكورتين
أما بخصوص الدالة GetObject فهي جيدة إلا أنها لا تعمل إلا مع الصور من نوع BMP
وهذا مثال على ذلك
Option Explicit Private Type Bitmap bmType As Long bmWidth As Long bmHeight As Long bmWidthBytes As Long bmPlanes As Integer bmBitsPixel As Integer bmBits As Long End Type Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" _ (ByVal hObject As Long, ByVal nCount As Long, ByRef lpObject As Any) As Long Private Declare Function LoadImage Lib "User32.dll" Alias "LoadImageA" ( _ ByVal hInst As Long, ByVal lpszName As String, ByVal uType As Long, _ ByVal cxDesirded As Long, ByVal cyDesired As Long, ByVal fuLoad As Long) As Long Private Const IMAGE_BITMAP = &O0 Private Const LR_LOADFROMFILE = 16 Private Sub CmdBitapDim_Click() Dim bm As Bitmap Dim hBitmap As Long hBitmap = LoadImage(App.hInstance, TxtPath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE) GetObject hBitmap, Len(bm), bm MsgBox "The Height = " & bm.bmHeight & vbNewLine & "The Width = " & bm.bmWidth End Sub
من http://studentsofgamedesign.com/VBGT_BitmapBitsAndDIBs.htm
شكرا
تم تعديل هذه المشاركة بواسطة micheal R jordan في 22 أغسطس 2007 في 18:58
لا تحتاج إلى الدالة LoadImage حمل الصورة ( كافة الأنساق المحتملة) مباشرة في الـ PictureBox ثم استعمل GetObject و مرر لها Handel الصورة (الخاصية Picture1.Picture.Handel على ما أذكر)
كما تستطيع الحصول على طول و عرض الصورة دون اللجوء للـ Api فقط من خلال Picture1.Picture.Width و Picture1.Picture.Height
السلام عليكم
أخي ytreza إذا كنت حملت المثال الاول الذي رفعته فإن به 4 icons
استعمل هذا الكود
Picture1.Picture = LoadPicture("128.ico")وستحصب على خطأ وهو فقط بخصوص 128x128
ولكن النظام ليس عنده أي مشكلة وعندما أستعمل LoadImage بهذه الطريقة
Sub LoadIconToPic(PicIcon As PictureBox) Dim hIcon As Long PicIcon.AutoRedraw = True PicIcon.AutoSize = True hIcon = LoadImage(App.hInstance, CmbIconPath, IMAGE_ICON, 128, 128, LR_LOADFROMFILE) PicIcon.Cls Call DrawIconEx(PicIcon.hDC, 0, 0, hIcon, 0, 0, 0, 0, DI_NORMAL) Call DestroyIcon(hIcon) End Sub
لا يحصل أي خطأ
السؤال المطروح كيف يحصل النظام على هذه المعلومة?
والمشكلة هي في header information بتاع Iocn
تم تعديل هذه المشاركة بواسطة micheal R jordan في 24 أغسطس 2007 في 17:55
و عليكم السلام و رحمة الله
السبب و الله أعلم راجع لعجز البيسك عن تحميل أيقونات أكبر من 32x32 بينما الدالة LoadImage تسطيع ذلك راجع المثال في الرابط أدناه
Create a VB Picture from an API Icon Handle
لا يمكنني تجربة المثال الذي أرفقته لأن جهازي عاطل أنا أتصل من مقهى انترنت لهذا ربما قد لا أكون دقيقا في الرد
السلام عليكم
شكرا لكم على المساعدة
وجدت بعض الاشياء المفيدة رغم أنني لم أجربها بعد
راجع موضوع ال FreeImage
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…