السلام عليكم
اريد كود يجعل الصورة تكون
1) رماديه
2) ابيض واسود
3)الصورة تكون مموجه بحيث ماتتلاحظ معالم الصورة
4) تكون الصورة كأنها مرسومه
اي واحد يعرف كود من هذي الاكواد طرشوها لي
بليززز يالله ابقي الهمه حقتكم
السلام عليكم
اريد كود يجعل الصورة تكون
1) رماديه
2) ابيض واسود
3)الصورة تكون مموجه بحيث ماتتلاحظ معالم الصورة
4) تكون الصورة كأنها مرسومه
اي واحد يعرف كود من هذي الاكواد طرشوها لي
بليززز يالله ابقي الهمه حقتكم
السلام عليكــم ورحمـة الله وبركاتــه ،،
هذه طريقة تحويل الصورة إلى أبيض×أسود
قد يفيدك هذا الرابط
إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال
مرحبا أخي/أختي الكريمـ(ـة) .
من الأفضل لك أن تقوم باستخدام صف يدعى ( ColorMatrix ) هذا الصف يحتاج إلى محرك ( ImageAttributes ) يقوم بإعداد قيم مصفوفة الـ ColorMatrix المرسل عبر الإجراء ( SetColorMatrix ), بشكل عام يعتبر هذا النوع من المعالجة ( باستخدام ( ImageAttributes و ColorMatrix ) ) الأسرع في أدائه, لكنه غير قادر على جعل جميع التأثيرات الشائعة ومنهم مما ذكرت في الأعلى, لكن هنالك طريقتان لعمل ذلك لا ولصنع تأثيرات جديدة بمعايير محدودة أومفتوحة للمستخدم, إحدا الطرق, هي استخدام حلقتين تكراريتين لتحصيل وتعديل الألوان عبر العمليتين ( GetPixel و SetPixel ) وهناك أيضاً طريقة أكثر صعوبة بشكل بسيط وهي استخدام الصف ( BitmapData ) والذي في الأول والأخير يقوم على أساس ( قراءة, تعديل Bytes ) .
قبل استخدام الـ( Code ) التالي عليك استدعاء المراجع التالية :
Imports [color= #990000;]System[color= #339933;].Drawing Imports [color= #990000;]System[color= #339933;].Drawing[color= #339933;].Imaging
هنا مثال عن عملية تحويل ألوان الصورة إلى ألوان بتدرج رمادي :
[color= #000000; font-weight: bold;]Public [color= #000000; font-weight: bold;]Function ScaleGray[color= #009900;](ByVal Pica [color= #b1b100;]As Image[color= #009900;]) [color= #b1b100;]As Image
Using Bmp [color= #b1b100;]As Bitmap [color= #339933;]= Pica[color= #339933;].Clone[color= #009900;]([color= #009900;])
Using IAttributes [color= #b1b100;]As [color= #000000; font-weight: bold;]New ImageAttributes
Using G [color= #b1b100;]As Graphics [color= #339933;]= Graphics[color= #339933;].FromImage[color= #009900;](Bmp[color= #009900;])
IAttributes[color= #339933;].SetColorMatrix[color= #009900;]([color= #000000; font-weight: bold;]New ColorMatrix[color= #009900;]([color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;])[color= #009900;]([color= #009900;]) [color= #990000;]_
[color= #009900;]{[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]0.29[color= #339933;], [color= #cc66cc;]0.29[color= #339933;], [color= #cc66cc;]0.29[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #009900;]}[color= #339933;], [color= #990000;]_
[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]0.59[color= #339933;], [color= #cc66cc;]0.59[color= #339933;], [color= #cc66cc;]0.59[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #009900;]}[color= #339933;], [color= #990000;]_
[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]0.12[color= #339933;], [color= #cc66cc;]0.12[color= #339933;], [color= #cc66cc;]0.12[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #009900;]}[color= #339933;], [color= #990000;]_
[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]1[color= #339933;], [color= #cc66cc;]0[color= #009900;]}[color= #339933;], [color= #990000;]_
[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]1[color= #009900;]}[color= #009900;]}[color= #009900;])[color= #009900;])
G[color= #339933;].DrawImage[color= #009900;](Bmp[color= #339933;], [color= #000000; font-weight: bold;]New Rectangle[color= #009900;]([color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], Bmp[color= #339933;].Width[color= #339933;], Bmp[color= #339933;].Height[color= #009900;])[color= #339933;], [color= #990000;]_
[color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], Bmp[color= #339933;].Width[color= #339933;], Bmp[color= #339933;].Height[color= #339933;], GraphicsUnit[color= #339933;].Pixel[color= #339933;], IAttributes[color= #009900;])
[color= #b1b100;]Return Bmp[color= #339933;].Clone[color= #009900;]([color= #009900;])
[color= #990000;]End Using
[color= #990000;]End Using
[color= #990000;]End Using
[color= #990000;]End [color= #000000; font-weight: bold;]Functionعلمية لجعل الصورة تبدو باللون الأبيض والأسود ( ليست متقنة )=( لأنه كما ذكر, ليس كل التأثيرات قابلة لتنفذ عبر هذا الصف ) .
[color= #000000; font-weight: bold;]Public [color= #000000; font-weight: bold;]Function WhiteAndBlack[color= #009900;](ByVal Pica [color= #b1b100;]As Image[color= #009900;]) [color= #b1b100;]As Image
Using Bmp [color= #b1b100;]As Bitmap [color= #339933;]= Pica[color= #339933;].Clone[color= #009900;]([color= #009900;])
Using IAttributes [color= #b1b100;]As [color= #000000; font-weight: bold;]New ImageAttributes
Using G [color= #b1b100;]As Graphics [color= #339933;]= Graphics[color= #339933;].FromImage[color= #009900;](Bmp[color= #009900;])
IAttributes[color= #339933;].SetColorMatrix[color= #009900;]([color= #000000; font-weight: bold;]New ColorMatrix[color= #009900;]([color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;])[color= #009900;]([color= #009900;]) [color= #990000;]_
[color= #009900;]{[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]5.0[color= #339933;], [color= #cc66cc;]5.0[color= #339933;], [color= #cc66cc;]5.0[color= #339933;], [color= #cc66cc;]0.0[color= #339933;], [color= #cc66cc;]0.0[color= #009900;]}[color= #339933;], [color= #990000;]_
[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]5.0[color= #339933;], [color= #cc66cc;]5.0[color= #339933;], [color= #cc66cc;]5.0[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0.0[color= #009900;]}[color= #339933;], [color= #990000;]_
[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]5.0[color= #339933;], [color= #cc66cc;]5.0[color= #339933;], [color= #cc66cc;]5.0[color= #339933;], [color= #cc66cc;]0.0[color= #339933;], [color= #cc66cc;]0.0[color= #009900;]}[color= #339933;], [color= #990000;]_
[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]-5.0[color= #339933;], [color= #cc66cc;]-5.0[color= #339933;], [color= #cc66cc;]-5.0[color= #339933;], [color= #cc66cc;]1.0[color= #339933;], [color= #cc66cc;]0.0[color= #009900;]}[color= #339933;], [color= #990000;]_
[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]0.5[color= #339933;], [color= #cc66cc;]0.5[color= #339933;], [color= #cc66cc;]0.5[color= #339933;], [color= #cc66cc;]0.0[color= #339933;], [color= #cc66cc;]1.0[color= #009900;]}[color= #009900;]}[color= #009900;])[color= #009900;])
G[color= #339933;].DrawImage[color= #009900;](Bmp[color= #339933;], [color= #000000; font-weight: bold;]New Rectangle[color= #009900;]([color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], Bmp[color= #339933;].Width[color= #339933;], Bmp[color= #339933;].Height[color= #009900;])[color= #339933;], [color= #990000;]_
[color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], Bmp[color= #339933;].Width[color= #339933;], Bmp[color= #339933;].Height[color= #339933;], GraphicsUnit[color= #339933;].Pixel[color= #339933;], IAttributes[color= #009900;])
[color= #b1b100;]Return Bmp[color= #339933;].Clone[color= #009900;]([color= #009900;])
[color= #990000;]End Using
[color= #990000;]End Using
[color= #990000;]End Using
[color= #990000;]End [color= #000000; font-weight: bold;]Functionعكس الألوان :
[color= #000000; font-weight: bold;]Public [color= #000000; font-weight: bold;]Function Negative[color= #009900;](Byval Pica [color= #b1b100;]As Image [color= #009900;]) [color= #b1b100;]As Image
Using Bmp [color= #b1b100;]As Bitmap [color= #339933;]= Pica[color= #339933;].Clone[color= #009900;]([color= #009900;])
Using IAttributes [color= #b1b100;]As [color= #000000; font-weight: bold;]New ImageAttributes
Using G [color= #b1b100;]As Graphics [color= #339933;]= Graphics[color= #339933;].FromImage[color= #009900;]( Bmp [color= #009900;])
IAttributes[color= #339933;].SetColorMatrix[color= #009900;]( [color= #000000; font-weight: bold;]New ColorMatrix[color= #009900;]( [color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;])[color= #009900;]([color= #009900;]) [color= #990000;]_
[color= #009900;]{[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]-1[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #009900;]}[color= #339933;], [color= #990000;]_
[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]-1[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #009900;]}[color= #339933;], [color= #990000;]_
[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]-1[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #009900;]}[color= #339933;], [color= #990000;]_
[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]1[color= #339933;], [color= #cc66cc;]0[color= #009900;]}[color= #339933;], [color= #990000;]_
[color= #000000; font-weight: bold;]New Single[color= #009900;]([color= #009900;]) [color= #009900;]{[color= #cc66cc;]1[color= #339933;], [color= #cc66cc;]1[color= #339933;], [color= #cc66cc;]1[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #009900;]}[color= #009900;]}[color= #009900;])[color= #009900;])
G[color= #339933;].DrawImage[color= #009900;]( Bmp[color= #339933;], [color= #000000; font-weight: bold;]New Rectangle[color= #009900;]( [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], Bmp[color= #339933;].Width[color= #339933;], Bmp[color= #339933;].Height [color= #009900;])[color= #339933;], [color= #990000;]_
[color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #339933;], Bmp[color= #339933;].Width[color= #339933;], Bmp[color= #339933;].Height[color= #339933;], GraphicsUnit[color= #339933;].Pixel[color= #339933;], IAttributes [color= #009900;])
[color= #b1b100;]Return Bmp[color= #339933;].Clone[color= #009900;]([color= #009900;])
[color= #990000;]End Using
[color= #990000;]End Using
[color= #990000;]End Using
[color= #990000;]End [color= #000000; font-weight: bold;]Functionتخفيق ملامح الصورة باستخدام الشكل الذي قام الأخ Ghost به :
[color= #000000; font-weight: bold;]Public [color= #000000; font-weight: bold;]Function Smooth[color= #009900;](ByVal Pica [color= #b1b100;]As Bitmap[color= #009900;]) [color= #b1b100;]As Image
Dim Bmp [color= #b1b100;]As [color= #000000; font-weight: bold;]New Bitmap[color= #009900;](Pica[color= #339933;].Width[color= #339933;], Pica[color= #339933;].Height[color= #009900;])
Dim G [color= #b1b100;]As Graphics [color= #339933;]= Graphics[color= #339933;].FromImage[color= #009900;](Bmp[color= #009900;])
G[color= #339933;].DrawImage[color= #009900;](Pica[color= #339933;], [color= #000000; font-weight: bold;]New Rectangle[color= #009900;]([color= #000000; font-weight: bold;]New Point[color= #009900;]([color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #009900;])[color= #339933;], Bmp[color= #339933;].Size[color= #009900;])[color= #339933;], [color= #000000; font-weight: bold;]New Rectangle[color= #009900;]([color= #000000; font-weight: bold;]New Point[color= #009900;]([color= #cc66cc;]0[color= #339933;],
0[color= #009900;])[color= #339933;], Pica[color= #339933;].Size[color= #009900;])[color= #339933;], GraphicsUnit[color= #339933;].Pixel[color= #009900;])
Dim DX [color= #b1b100;]As Integer [color= #339933;]= [color= #cc66cc;]2[color= #339933;], DY [color= #b1b100;]As Integer [color= #339933;]= [color= #cc66cc;]2
Dim Red[color= #339933;], Green[color= #339933;], Blue [color= #b1b100;]As Integer
Dim X[color= #339933;], Y [color= #b1b100;]As Integer
With Pica
[color= #b1b100;]For Y [color= #339933;]= DX To [color= #339933;].Height [color= #339933;]- DX [color= #339933;]- [color= #cc66cc;]1
[color= #b1b100;]For X [color= #339933;]= DY To [color= #339933;].Width [color= #339933;]- DY [color= #339933;]- [color= #cc66cc;]1
Red [color= #339933;]= CInt[color= #009900;]([color= #009900;](CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]- [color= #cc66cc;]1[color= #339933;], Y [color= #339933;]- [color= #cc66cc;]1[color= #009900;])[color= #339933;].R[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]- [color= #cc66cc;]1[color= #339933;], Y[color= #009900;])[color= #339933;].R[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]- [color= #cc66cc;]1[color= #339933;], Y [color= #339933;]+ [color= #cc66cc;]1[color= #009900;])[color= #339933;].R[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X[color= #339933;], Y [color= #339933;]- [color= #cc66cc;]1[color= #009900;])[color= #339933;].R[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X[color= #339933;], Y[color= #009900;])[color= #339933;].R[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X[color= #339933;], Y [color= #339933;]+ [color= #cc66cc;]1[color= #009900;])[color= #339933;].R[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]+ [color= #cc66cc;]1[color= #339933;], Y [color= #339933;]- [color= #cc66cc;]1[color= #009900;])[color= #339933;].R[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]+ [color= #cc66cc;]1[color= #339933;], Y[color= #009900;])[color= #339933;].R[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]+ [color= #cc66cc;]1[color= #339933;], Y [color= #339933;]+ [color= #cc66cc;]1[color= #009900;])[color= #339933;].R[color= #009900;])[color= #009900;]) [color= #339933;]/ [color= #cc66cc;]9[color= #009900;])
Green [color= #339933;]= CInt[color= #009900;]([color= #009900;](CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]- [color= #cc66cc;]1[color= #339933;], Y [color= #339933;]- [color= #cc66cc;]1[color= #009900;])[color= #339933;].G[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]- [color= #cc66cc;]1[color= #339933;], Y[color= #009900;])[color= #339933;].G[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]- [color= #cc66cc;]1[color= #339933;], Y [color= #339933;]+ [color= #cc66cc;]1[color= #009900;])[color= #339933;].G[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X[color= #339933;], Y [color= #339933;]- [color= #cc66cc;]1[color= #009900;])[color= #339933;].G[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X[color= #339933;], Y[color= #009900;])[color= #339933;].G[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X[color= #339933;], Y [color= #339933;]+ [color= #cc66cc;]1[color= #009900;])[color= #339933;].G[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]+ [color= #cc66cc;]1[color= #339933;], Y [color= #339933;]- [color= #cc66cc;]1[color= #009900;])[color= #339933;].G[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]+ [color= #cc66cc;]1[color= #339933;], Y[color= #009900;])[color= #339933;].G[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]+ [color= #cc66cc;]1[color= #339933;], Y [color= #339933;]+ [color= #cc66cc;]1[color= #009900;])[color= #339933;].G[color= #009900;])[color= #009900;]) [color= #339933;]/ [color= #cc66cc;]9[color= #009900;])
Blue [color= #339933;]= CInt[color= #009900;]([color= #009900;](CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]- [color= #cc66cc;]1[color= #339933;], Y [color= #339933;]- [color= #cc66cc;]1[color= #009900;])[color= #339933;].B[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]- [color= #cc66cc;]1[color= #339933;], Y[color= #009900;])[color= #339933;].B[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]- [color= #cc66cc;]1[color= #339933;], Y [color= #339933;]+ [color= #cc66cc;]1[color= #009900;])[color= #339933;].B[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X[color= #339933;], Y [color= #339933;]- [color= #cc66cc;]1[color= #009900;])[color= #339933;].B[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X[color= #339933;], Y[color= #009900;])[color= #339933;].B[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X[color= #339933;], Y [color= #339933;]+ [color= #cc66cc;]1[color= #009900;])[color= #339933;].B[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]+ [color= #cc66cc;]1[color= #339933;], Y [color= #339933;]- [color= #cc66cc;]1[color= #009900;])[color= #339933;].B[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]+ [color= #cc66cc;]1[color= #339933;], Y[color= #009900;])[color= #339933;].B[color= #009900;]) [color= #339933;]+ [color= #990000;]_
CInt[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X [color= #339933;]+ [color= #cc66cc;]1[color= #339933;], Y [color= #339933;]+ [color= #cc66cc;]1[color= #009900;])[color= #339933;].B[color= #009900;])[color= #009900;]) [color= #339933;]/ [color= #cc66cc;]9[color= #009900;])
Red [color= #339933;]= Math[color= #339933;].[color= #990000;]Min[color= #009900;](Math[color= #339933;].[color= #990000;]Max[color= #009900;](Red[color= #339933;], [color= #cc66cc;]0[color= #009900;])[color= #339933;], [color= #cc66cc;]255[color= #009900;])
Green [color= #339933;]= Math[color= #339933;].[color= #990000;]Min[color= #009900;](Math[color= #339933;].[color= #990000;]Max[color= #009900;](Green[color= #339933;], [color= #cc66cc;]0[color= #009900;])[color= #339933;], [color= #cc66cc;]255[color= #009900;])
Blue [color= #339933;]= Math[color= #339933;].[color= #990000;]Min[color= #009900;](Math[color= #339933;].[color= #990000;]Max[color= #009900;](Blue[color= #339933;], [color= #cc66cc;]0[color= #009900;])[color= #339933;], [color= #cc66cc;]255[color= #009900;])
Bmp[color= #339933;].SetPixel[color= #009900;](X[color= #339933;], Y[color= #339933;], Color[color= #339933;].FromArgb[color= #009900;]([color= #339933;].GetPixel[color= #009900;](X[color= #339933;], Y[color= #009900;])[color= #339933;].A[color= #339933;], Red[color= #339933;], Green[color= #339933;], Blue[color= #009900;])[color= #009900;])
[color= #990000;]Next
[color= #990000;]Next
[color= #990000;]End With
[color= #b1b100;]Return Bmp
[color= #990000;]End [color= #000000; font-weight: bold;]Functionمع العلم أنه كل ما كبر حجم الصورة أوبالأحرى أبعادها, استغرقت العملية وقت أطول, لهذا السبب لا يحبذ استخدامها
أما بالنسبة للطلب الأخير فاعتذر لأنني لم أقوم بكتابة كود له سابقاً أو حتى البحث عنه .
بالتوفيق.
تم تعديل هذه المشاركة بواسطة Bashar Rabat في 8 سبتمبر 2009 في 05:52
The important thing is not so much
that every child should be taught,
as that every child should be given the wish to learn.
مرحباً !،
هذا مثال عن استخدام الـ( BitmapData ) والعمليات ( LockBits و UnlockBits ), ستلاحظ أيضا أن العامل الأساسي في استخدام الـ( BitmapData ) وتعديل قيم عمق الألوان الأساسية التي تأتي قيمة كل منها على هيئة Byte أي ( 0 إلى 255 ) إذا فالعملية ليست بتلك الصعوبة لأنها تعمل على أساس الألون الأساسية بالنسبة لصيغ الـ( RGB و ARGB ), يتم نسخ هذه القيم ( قيم أعماق كل لون ) إلى مصفوفة Bytes عبر استخدام الـ( Marshal ) ومن ثم تعديل هذه القيم بشكل مباشر عن طريق حلقة تكرارية تقوم على أساس الدوران بمقدار عدد أعماق اللون اي يمكن أن تكون ( Red, Green, Blue ) ويمكن أن تحوي ( Alpha, Red, Green, Blue ) فلذلك عليك الحذر عند التعامل مع كل نوع، هناك أيضاً أنواع أخرى من أنواع الصور, إحداها يعامل بأساس نظام ألوان الـ( Win32 ) هذا النظام يعتمد تمثيل قيم كل من ( Red, Green, Blue ) بقيمة واحدة , العملية التالية تساعدك بتعديل الصور ذات ثلاث أو أربعة أعماق, يتم تحويل اللون التي تقل مجموع قيم أعماقه عن القيمة المحددة للون الأبيض إلى لون شفاف إذا كانت أعماقه أربعة, وإلى اللون الأسود إذا كان عدد أعماق اللون ثلاثة, وبالنسبة للقيم التي تزيد عن القيمة المحددة للون الأبيض فيتم جعل قيم هذا اللون تساوي ( 255 ) أي ( أبيض ), بعد الإنتهاء من كتابة جميع القيم, يتم نسخ هذه المصفوفة إلى الـ( BitmapData ) الذي قمنا من خلاله بنسخ قيم أعماق الألوان للصورة الحالية إلى المصفوفة ( ColorValues ), بعد نسخ القيم الجديدة إلى الـ( BitmapData ) نقوم بتحرير الـ( Bits ) والتي تأتي هنا بمثابة إعداد .
المراجع المطلوبة :
Imports [color= #990000;]System[color= #339933;].Runtime[color= #339933;].InteropServices Imports [color= #990000;]System[color= #339933;].Drawing Imports [color= #990000;]System[color= #339933;].Drawing[color= #339933;].Imaging
[color= #000000; font-weight: bold;]Private [color= #000000; font-weight: bold;]Function WhiteAndYourOwnBackColor[color= #009900;](ByVal Pica [color= #b1b100;]As Image[color= #339933;], [color= #990000;]_
ByVal YOBackColor [color= #b1b100;]As Color[color= #339933;], ByVal MaxOfWhite [color= #b1b100;]As Byte[color= #009900;]) [color= #b1b100;]As Image
Dim _NewBitmap [color= #b1b100;]As Bitmap [color= #339933;]= Pica[color= #339933;].Clone
Dim GotAlphaChannel [color= #b1b100;]As Byte [color= #339933;]= [color= #cc66cc;]0
With _NewBitmap
Dim _Rectangle [color= #b1b100;]As [color= #000000; font-weight: bold;]New Rectangle[color= #009900;]([color= #000000; font-weight: bold;]New Point[color= #009900;]([color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #009900;])[color= #339933;], [color= #339933;].Size[color= #009900;])
Dim _BitmapData [color= #b1b100;]As BitmapData [color= #339933;]= [color= #339933;].LockBits[color= #009900;](_Rectangle[color= #339933;], [color= #990000;]_
Drawing[color= #339933;].Imaging[color= #339933;].ImageLockMode[color= #339933;].ReadWrite[color= #339933;], [color= #339933;].PixelFormat[color= #009900;])
Dim Ptr [color= #b1b100;]As IntPtr [color= #339933;]= _BitmapData[color= #339933;].Scan0
Dim BytesCount [color= #b1b100;]As Integer [color= #339933;]= _BitmapData[color= #339933;].Stride [color= #339933;]* _BitmapData[color= #339933;].Height
Dim ColorValues[color= #009900;](BytesCount [color= #339933;]- [color= #cc66cc;]1[color= #009900;]) [color= #b1b100;]As Byte
Marshal[color= #339933;].[color= #990000;]Copy[color= #009900;](Ptr[color= #339933;], ColorValues[color= #339933;], [color= #cc66cc;]0[color= #339933;], BytesCount[color= #009900;])
Dim ColorChannelsCount [color= #b1b100;]As Byte [color= #339933;]= [color= #009900;](_BitmapData[color= #339933;].Stride [color= #339933;]/ _BitmapData[color= #339933;].Width[color= #009900;])
GotAlphaChannel [color= #339933;]= [color= #009900;](ColorChannelsCount [color= #339933;]- [color= #cc66cc;]3[color= #009900;])
[color= #b1b100;]For C [color= #b1b100;]As Int32 [color= #339933;]= [color= #cc66cc;]0 To ColorValues[color= #339933;].Length [color= #339933;]- [color= #cc66cc;]1 Step ColorChannelsCount
Dim Alpha[color= #339933;], Red[color= #339933;], Green[color= #339933;], Blue [color= #b1b100;]As Int16
Alpha [color= #339933;]= ColorValues[color= #009900;](C[color= #009900;]) [color= #339933;]: Red [color= #339933;]= ColorValues[color= #009900;](C [color= #339933;]+ GotAlphaChannel[color= #009900;])
Green [color= #339933;]= ColorValues[color= #009900;](C [color= #339933;]+ [color= #009900;](GotAlphaChannel [color= #339933;]+ [color= #cc66cc;]1[color= #009900;])[color= #009900;]) [color= #339933;]: Blue [color= #339933;]= ColorValues[color= #009900;](C [color= #339933;]+ [color= #009900;](GotAlp
haChannel [color= #339933;]+ [color= #cc66cc;]2[color= #009900;])[color= #009900;])
Dim RGBEQU [color= #b1b100;]As Int32 [color= #339933;]= [color= #009900;](Red [color= #339933;]+ Blue [color= #339933;]+ Green[color= #009900;])
[color= #b1b100;]If RGBEQU [color= #339933;]> [color= #cc66cc;]0 Then
[color= #b1b100;]If CInt[color= #009900;](RGBEQU [color= #339933;]/ ColorChannelsCount[color= #009900;]) [color= #339933;]< MaxOfWhite Then
ColorValues[color= #009900;](C[color= #009900;]) [color= #339933;]= Alpha [color= #339933;]: ColorValues[color= #009900;](C [color= #339933;]+ GotAlphaChannel[color= #009900;]) [color= #339933;]= [color= #cc66cc;]0
ColorValues[color= #009900;](C [color= #339933;]+ [color= #009900;](GotAlphaChannel [color= #339933;]+ [color= #cc66cc;]1[color= #009900;])[color= #009900;]) [color= #339933;]= [color= #cc66cc;]0 [color= #339933;]: ColorValues[color= #009900;](C [color= #339933;]+ [color= #009900;](GotAlphaC
hannel [color= #339933;]+ [color= #cc66cc;]2[color= #009900;])[color= #009900;]) [color= #339933;]= [color= #cc66cc;]0
[color= #b1b100;]Else
[color= #b1b100;]If GotAlphaChannel [color= #339933;]= [color= #cc66cc;]1 Then ColorValues[color= #009900;](C[color= #009900;]) [color= #339933;]= Alpha
ColorValues[color= #009900;](C [color= #339933;]+ GotAlphaChannel[color= #009900;]) [color= #339933;]= [color= #cc66cc;]255
ColorValues[color= #009900;](C [color= #339933;]+ [color= #009900;](GotAlphaChannel [color= #339933;]+ [color= #cc66cc;]1[color= #009900;])[color= #009900;]) [color= #339933;]= [color= #cc66cc;]255 [color= #339933;]: ColorValues[color= #009900;](C [color= #339933;]+ [color= #009900;](GotAlph
aChannel [color= #339933;]+ [color= #cc66cc;]2[color= #009900;])[color= #009900;]) [color= #339933;]= [color= #cc66cc;]255
[color= #990000;]End [color= #b1b100;]If
[color= #990000;]End [color= #b1b100;]If
[color= #990000;]Next
Marshal[color= #339933;].[color= #990000;]Copy[color= #009900;](ColorValues[color= #339933;], [color= #cc66cc;]0[color= #339933;], Ptr[color= #339933;], BytesCount[color= #009900;])
[color= #339933;].UnlockBits[color= #009900;](_BitmapData[color= #009900;])
[color= #990000;]End With
[color= #b1b100;]If GotAlphaChannel [color= #339933;]= [color= #cc66cc;]1 Then
Dim _ReturnBitmap [color= #b1b100;]As [color= #000000; font-weight: bold;]New Bitmap[color= #009900;](_NewBitmap[color= #339933;].Width[color= #339933;], _NewBitmap[color= #339933;].Height[color= #009900;])
Using G [color= #b1b100;]As Graphics [color= #339933;]= Graphics[color= #339933;].FromImage[color= #009900;](_ReturnBitmap[color= #009900;])
G[color= #339933;].Clear[color= #009900;](YOBackColor[color= #009900;])
G[color= #339933;].DrawImage[color= #009900;](_NewBitmap[color= #339933;], [color= #cc66cc;]0[color= #339933;], [color= #cc66cc;]0[color= #009900;])
_NewBitmap[color= #339933;].Dispose[color= #009900;]([color= #009900;])
[color= #990000;]End Using
[color= #b1b100;]Return _ReturnBitmap
[color= #b1b100;]Else
[color= #b1b100;]Return _NewBitmap
[color= #990000;]End [color= #b1b100;]If
[color= #990000;]End [color= #000000; font-weight: bold;]Functionالإستخدام :
Dim Img [color= #b1b100;]As Image [color= #339933;]= WhiteAndYourOwnBackColor[color= #009900;](Image[color= #339933;].FromFile[color= #009900;](FileName[color= #009900;])[color= #339933;], Color[color= #339933;].Red[color= #339933;], [color= #cc66cc;]128[color= #009900;])
لقراءة القيم على شكل أبعاد, يمكنك عم شي من هذا القبيل :
[color= #b1b100;]For Y [color= #b1b100;]As Int32 [color= #339933;]= [color= #cc66cc;]0 To _BitmapData[color= #339933;].Height [color= #339933;]- [color= #cc66cc;]1
[color= #b1b100;]For X [color= #b1b100;]As Int32 [color= #339933;]= [color= #cc66cc;]0 To _BitmapData[color= #339933;].Width [color= #339933;]- [color= #cc66cc;]1
Dim CPosition [color= #b1b100;]As Int32 [color= #339933;]= [color= #009900;]([color= #009900;](Y [color= #339933;]* _BitmapData[color= #339933;].Stride[color= #009900;]) [color= #339933;]+ [color= #009900;](X [color= #339933;]* ColorChannelsCount[color= #009900;])[color= #009900;])
Dim Alpha[color= #339933;], Red[color= #339933;], Green[color= #339933;], Blue [color= #b1b100;]As Int16
Alpha [color= #339933;]= ColorValues[color= #009900;](CPosition[color= #009900;]) [color= #339933;]: Red [color= #339933;]= ColorValues[color= #009900;](CPosition [color= #339933;]+ GotAlphaChannel[color= #009900;])
Green [color= #339933;]= ColorValues[color= #009900;](CPosition [color= #339933;]+ [color= #009900;](GotAlphaChannel [color= #339933;]+ [color= #cc66cc;]1[color= #009900;])[color= #009900;]) [color= #339933;]: Blue [color= #339933;]= ColorValues[color= #009900;](CPosition [color= #339933;]+ [color= #009900;](
GotAlphaChannel [color= #339933;]+ [color= #cc66cc;]2[color= #009900;])[color= #009900;])
[color= #b1b100;]If [color= #009900;](GotAlphaChannel [color= #339933;]= [color= #cc66cc;]0[color= #009900;]) Then Alpha [color= #339933;]= [color= #cc66cc;]255
Dim Pixel [color= #b1b100;]As Color [color= #339933;]= Color[color= #339933;].FromArgb[color= #009900;]( Alpha[color= #339933;], Red[color= #339933;], Green[color= #339933;], Blue[color= #009900;])
[color= #990000;]Next
[color= #990000;]Nextبالتوفيق .
The important thing is not so much
that every child should be taught,
as that every child should be given the wish to learn.
اهلين اخووويBashar Rabat
ممكن بس وين انسخ الكود ؟ احطه في البتن ؟؟؟
؟
وممكن شرح بعض الاختصارات ابقي افهم الكود بشكل ممتاز