PDA

View Full Version : سوال: پرینت گرفتن از عکس درون پیکچر باکس



salamu
شنبه 02 دی 1391, 14:35 عصر
سلام.فرض کنیم که ما یه پیکچر باکس داریم که توش چند تا شئ مثلاً لیبل هست.حالا چه طوری میشه از اون طوری پرینت گرفت که اشیا هم بیفتن؟یعنی عکسی توی پیکچر نیست و فقط چند تا شی هست که می خوام ازشون پرینت بگیرم ولی با دستور:

Printer.PaintPicture Picture1.Picture, 100, 100
printer.enddoc

فقط عکس پیکچر باکس پرینت میشه و اجسام درون پیکچر باکس پرینت گرفته نمی شن.و من می خوام اون ها هم پرینت بشن.

salamu
شنبه 02 دی 1391, 17:38 عصر
لا اقل بگید چطوری عکس پیکچر باکس رو ذخیره کنم به صورتی که اشیای داخلش هم بیفتن.

salamu
دوشنبه 04 دی 1391, 14:42 عصر
یعنی از این همه استاد کسی بلد نیست؟

amin32
دوشنبه 04 دی 1391, 15:45 عصر
فکر میکنم این روش مشکلتون رو حل کنه.
دو تا پیکچر باکس در فرم قرار بدید.پیکچر اول به عنوان نگهدارنده کنترلها هست و پیکچر دوم برای ذخیره تصویر پیکچر اول. خاصیت AutoRedraw پیکچر دوم رو True کنید.ابتدا توابع زیر رو تعریف کنید:


Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
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


حالا برای ذخیره تصویر مربوط به پیکچر اول در پیکچر دوم از کد زیر استفاده کنید:


hdcScreen = GetDC(Picture1.hwnd)
w = Picture2.Width
h = Picture2.Height
r = StretchBlt(Picture2.hdc, 0, 0, w, h, hdcScreen, 0, 0, Picture1.Width, Picture1.Height, vbSrcCopy)


حالا میتونید از پیکچر دوم پرینت بگیرید.

salamu
چهارشنبه 06 دی 1391, 16:21 عصر
همین دستور عالیه ولی هرچی سعی کردم کار نکرد.اگه میشه نمونشو آپلود کنید.

amin32
چهارشنبه 06 دی 1391, 21:35 عصر
فکر میکنم مشکل از دستور زیر هست که اشتباها جا مونده بود و باید در آخر دستورات بنویسید.

Picture2.Picture = Picture2.Image


به هر حال پروژه رو براتون آپلود کردم97331