الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اريد الصورة الشفافة تظهر شفافة

بدأه مبرمج مبتدا في 28 مايو 2008 · 6 رد · 1,077 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله

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

او هناك كود لظهرها شفافة

startingprogremmer.jpg
#2

السلام عليكم...

post-28631-1212012758_thumb.jpg

هناك طريقتان لعرض صور بخلفية شفافة (أو تحديد أحد الألوان في الصورة ليكون شفافاً):

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

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#3
اقتباس
اذا كانت الصورة شفافة اريدها تظهر شفافة !

اعرضها في الأداة Image وستظهر شفافة ( تنطبق على الصور ذات الامتداد gif ) ..

سبحان الله وبحمده ... سبحان الله العظيم

#4

المقصود :

ليست شفافة كليا

بل صورة شفافة : 50% شفافيتها !

startingprogremmer.jpg
#5

السلام عليكم...

يمكنك استعمال الكود البسيط التالي (مع ضبط 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 = معتمة بالكامل.

نرجو الاستفادة و السلام

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#6

يصير طريقة بدون كود

اريد الشفافية في جهة وحدةمن الصورة مثلا

startingprogremmer.jpg
#7

UP

startingprogremmer.jpg

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…