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

حفظ وطباعة ال PictureBox والعناصر الموجودة ضمنها

مغلق
بدأه Tony_Sh في 21 يوليو 2004 · 2 رد · 717 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا ياشباب...

انني أقوم حاليا بإنشاء برنامج يقوم بتحديد مناطق معينة على صورة ضمن PictureBox.

نقطة التحديد هي عبارة عن صورة كرة موضوعة ضمن Image .

يتم تحديد هذه المناطق عن طريق نقل احداثيات الـ Image الى الموقع المحدد ضمن PictureBox.

الآن كيف يمكن حفظ هذه الصورة (أو جزء منها) مع نقاط التحديد بصيغة jpg مع المحافظة على دقة هذه الصورة.

وكيف أستطيع طباعة هذه الصورة (أو جزء منها) مع نقاط التحديد على الطابعة مع تحديد دقة الطباعة وحجم الورقة.

ولكم الشكر...

#2

السلام عليكم

يوجد امر اسمه PaintPicture وهو يستعمل لمثل هذه الحالات

حيث يقوم بتحديد جز معين من الصورة رقم 1 ونقله الي الصورة رقم 2 وبذلك تتمكن من طباعة الصورة رقم 2 والتي تحتوي الجزء المراد طباعته

سوف ارفق مثال قريبا جدا

الإنسان الذي يقول بأنه لا يمكن عمل شيء يجب ألا يعيق مطلقاً الإنسان الذي يقوم بعمل ذلك الشيء.

إن تخطئ فأنت إنسان ... أما أن تلوم جهازك الكمبيوتر على خطأك فهذا أكثر إنسانية.

#3

شكرا لك يا أخي العزيز على الرد السريع...

Printer.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode

PaintPicture تقوم بطباعة جزء من صورة وذلك بتحديد x2, y2, width2, height2

*********************************

الكود التالي يقوم برسم محتويات الـ PictureBox واسنادها كصورة ضمن الـ PictureBox واقتطاع جزء من الصورة ثم طباعته

Public Sub PrintPictureBox(Box As PictureBox, NumCopies As Byte, PrntX2 As Single, _
                    PrntY2 As Single, PrntWidth2 As Single, PrntHeight2 As Single, _
                    Optional prnPaperSize As PrinterObjectConstants = vbPRPSA4, _
                    Optional x As Single = 0, Optional y As Single = 0)
                    
Dim rv As Long
Dim ar As Boolean

Dim ZoomPercH As Single, ZoomPercW As Single
Dim prnWidth As Single, prnHeight As Single

On Error GoTo Exit_Sub
  
With Box
    'Save ReDraw value
    ar = .AutoRedraw
    
    'Set persistance
    .AutoRedraw = True

    Printer.PrintQuality = vbPRPQHigh
    Printer.Copies = NumCopies
    Printer.orientation = vbPRORLandscape
    Printer.PaperSize = prnPaperSize
        
        
    'Wake up printer
    Printer.Print

    'Draw controls to picture box
    rv = SendMessage(.hwnd, WM_PAINT, .hdc, 0)
    rv = SendMessage(.hwnd, WM_PRINT, .hdc, _
        PRF_CHILDREN Or PRF_CLIENT Or PRF_OWNED)
    
    'Refresh image to picture property
    .Picture = .image

    ZoomPercH = (Printer.height / .height) - 1.2
    ZoomPercW = (Printer.width / .width) - 1.2
    If ZoomPercH < ZoomPercW Then
        prnHeight = .height * ZoomPercH
        prnWidth = .width * ZoomPercH
    Else
        prnHeight = .height * ZoomPercW
        prnWidth = .width * ZoomPercW
    End If

    'Copy picture to Printer
    Printer.PaintPicture .Picture, x, y, prnWidth, prnHeight, PrntX2, PrntY2, PrntWidth2, PrntHeight2
    Printer.EndDoc

    'Restore backcolor  (Re-load picture if picture was used)
    Box.Line (0, 0)-(.ScaleWidth, .ScaleHeight), .BackColor, BF
    
    'Restore ReDraw
    .AutoRedraw = ar
End With
  
Exit_Sub:
    If Err.Number Then MsgBox Err.Description, vbOKOnly, "Printer Error!"
  
End Sub

ولكن المشكلة هي أن الكود السابق يقوم برسم المحتويات الظاهرة ضمن PictureBox

بمعنى آخر:

ضمن الPictureBox يوجد Image يتم تحميل الصورة عليها، ولكن حجم الصورة كبير وخاصية Stretch هي False وبالتالي فإن جزء من هذه الصورة سوف يكون مرئي

وباستعمال الكود السابق سوف يتم طباعة الجزء المرئي من الصورة فقط

فهل من حل لهذه المشكلة؟؟؟؟؟؟؟؟

هذا الموضوع مغلق.

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

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

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

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

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