السلام عليكم و رحمة الله
اذا كانت الصورة شفافة اريدها تظهر شفافة !
او هناك كود لظهرها شفافة
السلام عليكم و رحمة الله
اذا كانت الصورة شفافة اريدها تظهر شفافة !
او هناك كود لظهرها شفافة

السلام عليكم...
هناك طريقتان لعرض صور بخلفية شفافة (أو تحديد أحد الألوان في الصورة ليكون شفافاً):
1. Visual Basic تدعم استعمال النوع GIF و هذا النوع بمكن تحديد أحد ألوانه كلون شفاف باستعمال أحد برامج معالجة الصور (مثلاً برنامج الرسام في Windows 98 أو Windows ME - الغريب أن هذه الخاصية تظهر عندي معطلة في رسام Windows XP). عند عرض هذا النوع من الصور في مكون Image فإن الصورة تظهر شفافة (حسب اللون المحدد على أنه شفاف فيها).
2. باستعمال الدالة TransparentBlt و هي من دوال Windows API كما هو مبين في الكود التالي، مع الملاحظات التالية:
أ. تم تغيير الخاصية ScaleMode لكل من النموذج (Form) و الـ PictureBox إلى وحدة البكسل (Pixels) لأن دوال Windows تتعامل بهذه الوحدات.
ب. يمكن إخفاء الـ PictureBox المصدر مع ضرورة ضبط الخاصية AutoRedraw على True.
طبعاً يمكنك أثناء التشغيل تحميل الصورة المطلوبة في الـ PicturBox ثم استدعاء دالة Windows لرسمها شفافة.
ملاحظة مهمة: يمكنك تغيير حجم الصورة الناتجة (توسيع أو انكماش) إذا اختلفت قيم الطول و العرض الهدف (DestWidth, DestHeight) عن قيم الطول و العرض المصدر (SrcWidth, SrcHeight) أما البارامتر الأخير TransColor فهو يمثل قيمة اللون المطلوب أن يكون شفافاً.
Private Declare Function TransparentBlt Lib "msimg32" (ByVal hDestDC As Long, ByVal XDest As Long, ByVal YDest As Long, ByVal DestWidth As Long, ByVal DestHeight As Long, ByVal hSrcDC As Long, ByVal XSrc As Long, ByVal YSrc As Long, ByVal SrcWidth As Long, ByVal SrcHeight As Long, ByVal TransColor As Long) As Long Private Sub Command1_Click() TransparentBlt Me.hDC, 8, 8, Picture1.ScaleWidth, Picture1.ScaleHeight, Picture1.hDC, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, &HC0C0C0 End Sub
نرجو الاستفادة و السلام.
وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
اقتباساذا كانت الصورة شفافة اريدها تظهر شفافة !
اعرضها في الأداة Image وستظهر شفافة ( تنطبق على الصور ذات الامتداد gif ) ..
سبحان الله وبحمده ... سبحان الله العظيم
السلام عليكم...
يمكنك استعمال الكود البسيط التالي (مع ضبط AutoRedraw للنموذج (Form) على True):
Private Type TBlendFunction BlendOp As Byte ' = AC_SRC_OVER BlendFlags As Byte ' = 0 SourceConstantAlpha As Byte ' = 0 (full transparent) - 255 (full opaque) AlphaFormat As Byte ' = AC_SRC_ALPHA, use 0 End Type Private Const AC_SRC_OVER As Byte = 0 ' For BlendOp member of TBlendFunction. Private Const AC_SRC_ALPHA As Byte = 1 ' For AlphaFormat member of TBlendFunction, we will use zero. Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdc As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal hdc As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal lInt As Long, ByVal BLENDFUNCT As Long) As Long Private Declare Sub RtlMoveMemory Lib "kernel32.dll" (Destination As Any, Source As Any, ByVal Length As Long) Private BF As TBlendFunction Private lBF As Long Private Sub Command1_Click() ' الجمل التالية فقط لوضع بعض النص و مساحة ملونة خلف الصورة Cls Line (0, 0)-(150, 150), vbYellow, BF CurrentX = 0 CurrentY = 0 Print "نص خلف الصورة" Print "نص خلف الصورة" Print "نص خلف الصورة" Print "نص خلف الصورة" Print "نص خلف الصورة" Print "نص خلف الصورة" Print "نص خلف الصورة" With BF .BlendOp = AC_SRC_OVER .BlendFlags = 0 .SourceConstantAlpha = 200 .AlphaFormat = 0 'AC_SRC_ALPHA End With 'copy the BLENDFUNCTION-structure to a Long RtlMoveMemory lBF, BF, 4 AlphaBlend Me.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, lBF 'Me.Refresh End Sub
درجة الشفافية تعتم على قيمة الحقل SourceConstantAlpha حيث 0 (الصفر) = شفافة بالكامل، و 255 = معتمة بالكامل.
نرجو الاستفادة و السلام
وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…