منتدى مصر التقني
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

أستخدام الاسلوب PaintPicture لعمل تاثير Zoom على الصور

اذهب الى الأسفل

أستخدام الاسلوب PaintPicture لعمل تاثير Zoom على الصور  Empty أستخدام الاسلوب PaintPicture لعمل تاثير Zoom على الصور

مُساهمة من طرف end.sub الثلاثاء ديسمبر 24, 2013 6:56 am

بسم الله الرحمن الرحيم


يسمح الأسلوب PaintPicture بعمل المؤثرات الخاصة مع الصور النقطية لذلك من الممكن استخدامه لعمل تأثير Zoom على صورة معينة و ذلك من خلال قراءة ابعاد تلك الصورة و تعديل تلك الابعاد بحجم اكبر و عرض الناتج فى مربع صورة اخرى

وهذا مثال عملى على ذلك

1) إنشاء مشروع EXE قياسي جديد.

2) إضافة اثنين PictureBoxes إلى Form1.

3) أجعل Picture1 أكبر ثم Picture2.

4) إضافة أي صورة إلى عنصر التحكم Picture1.

5) السابقة الأسطر التالية من التعليمات البرمجية إلى Form1:

- الاعلان عن متغيرات تخزين أبعاد الصور المصدر بها


الكود:
Dim LastX As Single
Dim LastY As Single




_نقوم بعمل اجراء وليكن بأسم ZoomPicture لقراءة أبعاد الصورة على النحو التالى :


الكود:

Public Sub ZoomPicture(Picture As StdPicture, X As Single, Y As Single, ZoomWindow As PictureBox, Optional Factor As Byte = 2)
ZoomWindow.PaintPicture Picture, 0, 0, ZoomWindow.ScaleWidth, ZoomWindow.ScaleHeight, X, Y, ZoomWindow.ScaleWidth / Factor, ZoomWindow.ScaleHeight / Factor, vbSrcCopy
End Sub


وحتى نستطيع فهم الكود السابق تعالوا نرى كافة الملعمات التى يتطلبها الاسلوب PaintPicture وهى على النحو التالى :

object.PaintPicture source, x1, y1, w1, h1, x2, y2, w2, h2, opcode


حيث أن :
_ object ...اسم مربع صورة، نموذج، أو كائن الطابعة أو كائن الوجهة و التى سيتم عرض الصورة عليها بعد التعديل

_source ...مصدر الرسم أو الصورة و التى تكون عادة موجودة فى Picturebox

_x1, y1 ....قيم رقمية تدل على دقة الإحداثيات الوجهة (وبعبارة أخرى، وموقع على الكائن الوجهة حيث الزاوية العلوية اليسرى من الصورة التي يمكن استخلاصها). والخاصية ScaleMode للكائن يحدد وحدة القياس المستخدمة

_w1, h1......قيم رقمية تدل على دقة عرض وجهة وارتفاع الصورة، وذلك باستخدام وحدات تحددها الخاصية ScaleMode الكائن الوجهة. فإذا كان عرض الوجهة أو ارتفاع أكبر أو أصغر من عرض المصدر (W2) أو ارتفاع (H2)،فيمتد الصورة أو مضغوط لتناسب. هذه الحجج هي اختيارية، وإذا قمت بحذفها يتم استخدام عرض المصدر (W1) والارتفاع (H1) مع عدم وجود تمتد أو ضغط.

_x2, y2: ....قيم رقمية تدل على دقة الإحداثيات مصدر كائن الصورة المراد نسخها وهذه الحجج هي اختيارية، وإذا قمت بحذفها فانها تعتبر 0 و تشير إلى الزاوية العليا اليسرى من الصورة المصدر.

_w2, h2 ....قيم رقمية تدل على دقة العرض والارتفاع من منطقة داخل مصدر و هذه الحجج هي اختيارية، وإذا قمت بحذفها  يتم استخدام عرض المصدر بالكامل وارتفاع

_opcode....قيمية رقمية من نوع  Long الذي يحدد العملية التى يتم تنفيذها بين وحدات البكسل من الصورة المصدر وبكسل من أي صورة موجودة على الوجهة

_ فى حدث MouseMove لمربع الصورة الاول نقوم بكتابة الشفرة التالية :

الكود:
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ZoomPicture Picture1.Image, X, Y, Picture2
    LastX = X
    LastY = Y
End Sub

_ فى حدث Paint لمربع الصورة الثانية نكتب الشفرة التالية :
الكود:
Private Sub Picture2_Paint()
    ZoomPicture Picture1.Image, LastX, LastY, Picture2
End Sub




 Very Happy Very Happy
end.sub
end.sub
.....
.....

تاريخ التسجيل : 15/08/2013
المساهمات : 70
النقاط : 132
التقيم : 10
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى