aryajonbesh
شنبه 15 آبان 1389, 09:30 صبح
با سلام خدمت دوستان عزیز
دوستان من در برنامه ای که در حال نوشتن اون هستم به مشکلی برخورد کردم که امیدوارم با راهنمایی سازنده شما دوستان عزیز بتونم مشکلم رو برطرف کنم. بنده توی برنامه قطعه کدی نوشتم که با کوچکنمایی و بزرگنمایی تصویر کیفیت اون برای چاپ از بین می ره، یعنی وقتی تصویر رو برای چاپ می فرستم، عکس چاپ شده بصورت شطرنجی چاپ می شه، حتی از PrintQuality هم استفاده کردم. در ضمن وقتی بنده از خاصیت Zoom شیء پرینتر (Printer.Zoom) استفاده می کنم این اتفاق نمی افته و عکس با کیفیت مناسب چاپ می شه. من می خواستم ببینم آیا راهی هست که بشه این مشکل رو برطرف کرد و من نخوام از خاصیت Zoom پرینتر استفاده کنم؟
قطعه کد زیر دقیقاً همونی هست که من دارم ازش استفاده می کنم:
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Private Declare Function SetStretchBltMode Lib "gdi32" (ByVal hdc As Long, ByVal hStretchMode As Long) As Long
Const STRETCHMODE = vbPaletteModeNone
Public Function StretchBMP(picA As PictureBox, PicB As PictureBox)
On Error Resume Next
'// Call StretchBMP (Picture1 , Picture2)
picA.AutoRedraw = True
PicB.AutoRedraw = True
picA.AutoSize = True
PicB.AutoSize = False
picA.ScaleMode = vbPixels
PicB.ScaleMode = vbPixels
Call SetStretchBltMode(PicB.hdc, STRETCHMODE)
Call StretchBlt(PicB.hdc, 0, 0, PicB.ScaleWidth, PicB.ScaleHeight, picA.hdc, 0, 0, picA.ScaleWidth, picA.ScaleHeight, vbSrcCopy)
PicB.Refresh
DoEvents
End Function
دوستان من در برنامه ای که در حال نوشتن اون هستم به مشکلی برخورد کردم که امیدوارم با راهنمایی سازنده شما دوستان عزیز بتونم مشکلم رو برطرف کنم. بنده توی برنامه قطعه کدی نوشتم که با کوچکنمایی و بزرگنمایی تصویر کیفیت اون برای چاپ از بین می ره، یعنی وقتی تصویر رو برای چاپ می فرستم، عکس چاپ شده بصورت شطرنجی چاپ می شه، حتی از PrintQuality هم استفاده کردم. در ضمن وقتی بنده از خاصیت Zoom شیء پرینتر (Printer.Zoom) استفاده می کنم این اتفاق نمی افته و عکس با کیفیت مناسب چاپ می شه. من می خواستم ببینم آیا راهی هست که بشه این مشکل رو برطرف کرد و من نخوام از خاصیت Zoom پرینتر استفاده کنم؟
قطعه کد زیر دقیقاً همونی هست که من دارم ازش استفاده می کنم:
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Private Declare Function SetStretchBltMode Lib "gdi32" (ByVal hdc As Long, ByVal hStretchMode As Long) As Long
Const STRETCHMODE = vbPaletteModeNone
Public Function StretchBMP(picA As PictureBox, PicB As PictureBox)
On Error Resume Next
'// Call StretchBMP (Picture1 , Picture2)
picA.AutoRedraw = True
PicB.AutoRedraw = True
picA.AutoSize = True
PicB.AutoSize = False
picA.ScaleMode = vbPixels
PicB.ScaleMode = vbPixels
Call SetStretchBltMode(PicB.hdc, STRETCHMODE)
Call StretchBlt(PicB.hdc, 0, 0, PicB.ScaleWidth, PicB.ScaleHeight, picA.hdc, 0, 0, picA.ScaleWidth, picA.ScaleHeight, vbSrcCopy)
PicB.Refresh
DoEvents
End Function