سلام
برای چاپ ترسمیات پیکچر باکس از چه روشی باید استفاده کرد ؟
نمونه برنامه میخوام.
Printable View
سلام
برای چاپ ترسمیات پیکچر باکس از چه روشی باید استفاده کرد ؟
نمونه برنامه میخوام.
سلام
اولاً عضویتتان را در p30 تبریک میگم.
دوماً، آخرش نتونستم شما را راضی کنم که دست از این VB6 ده سال پیش بردارید.
سوماً،کد زیر را تست کنید، فکر کنم جواب بده
کد:Call Printer.PaintPicture(Me.Picture1.Image, 0, 0)
سلام
میشه نمونه بزارین ؟
من از این کدا استفاده کردم ولی جواب نگرفتم!
کد:Private Sub Command1_Click()
Printer.ScaleMode = 3
Call Printer.PaintPicture(Me.Picture1.Image, 0, 0)
End Sub
Private Sub Command2_Click()
Printer.ScaleMode = 3
Form1.Command1.Visible = False
Form1.Command2.Visible = False
Form1.PrintForm
End Sub
سلام
خوب پس این دو تا رو چک کنید، دیگه باید نکیشون جواب یده
کد:Call Printer.PaintPicture(Me.Picture1.Picture, 0, 0)
Call Printer.EndDoc
==========
Call Printer.PaintPicture(Me.Picture1.Image, 0, 0)
Call Printer.EndDoc
سلام
چرا یوزر کنترل خطی رو که تو پیکچر باکس قرار داره تو پرینت نمیافته ؟
ولی خطوط ترسیم شده توسط برنامه تو پرینت هستن ؟
اسکیل د پیکچر باکس و پرینتر و فرم و یوزرکنترل همه پیکسل هست !
سلام طبیعاتاً فقط تصویر و ترسیماتی رسم میشوند که جزء خصوصت Image باشند، یعنی این ربطی به کنترلرهای دیگر که روی کنترلر مورد نظر قرار دارد، ندارد و آنها ترسیم نخواهند شد.
فقط تصویر Image خود کنترلر مورد نظر رسم میشود.
سلام
چرا این کد جواب نمیده !
من از یوزرکنترل خط استفاده کردم . چرا با توجه به اینکه برای شی پرینتر اسکیل گذاشتیم و مختصات هر خط رو بهش میدیم درست ترسیم نمیکنه ؟ !!!!
دوستان میشه تست کنید ؟
کد:
Dim WithEvents ComSavBmp As VBControlExtender
Dim i As Long
Private Sub Command1_Click()
Dim ctl As Control
Printer.Scale (-100, 100)-(100, -100)
For Each ctl In Controls
If TypeOf ctl Is Project1.UserControl1 Then
Printer.CurrentX = ctl.LineX2
Printer.CurrentY = ctl.LineY2
Printer.Line (ctl.LineX2, ctl.LineY2)-(ctl.LineX1, ctl.LineY1)
End If
Next
Printer.EndDoc
End Sub
Private Sub Command2_Click()
On Error Resume Next
i = i + 1
Set ComSavBmp = Controls.Add("Project1.UserControl1", "ComSavBmp" & i, Picture1)
With ComSavBmp
.Top = 99 'Pb.ScaleTop + Pb.Top '
.Left = -99 'Pb.ScaleLeft + Pb.Left '
.Width = Picture1.ScaleWidth
.Height = -(Picture1.ScaleHeight)
.visible = True
End With
End Sub
Private Sub Form_Load()
Form1.Caption = "(" + Str(UserControl12.LineX1) + "," + Str(UserControl12.LineY1) + "," + Str(UserControl12.LineX2) + "," + Str(UserControl12.LineY2)
i = 0
Printer.ScaleMode = pixcel
Picture1.Scale (-100, 100)-(100, -100)
End Sub
کد:uplod.ir/download.php?file=102967
سلام
حدس میزنم که شما (-100, 100)-(100, -100) را برای یک صفحه A4 تست کرده اید؟
آیا A4 مربعی است؟
اگر ارتفاع را دو برابر کنید، شاید حل شود.
ضمناً دستور Printer.ScaleMode = pixcel کلاً اشتباه سینتکسی است و اگر هم درست بود، با وجود دستور Scale بی معنی بود.
دو خط آخر form_load را حذف کنید. دستورات CurrentX و CurrentY هم هیچ فایده ای به حال شما ندارند و زائد هستند.
سلام
نه من ارتفاع رو دوبرار میکنم خطای زمان اجرا میده !!!!
فکر کنم به خاطر اینه که ابعاد خیلی بزرگتر میشن .
یه سوال دیگه :
اگه بخوام از پیکچر باکس با دو تابع api زیر عکس بگیرم نتیجه میگیرم ؟
البته میخوام کیفیت عکس هم خوب باشه .
======================================
میتونم با تابع GetWindowRect
اين تابع هندل يک پنجره را مي گيرد و مختصات چهارچوب آن نسبت به دسکتاپ را بر مي گرداند
گر تابع کار خود را با موفقيت به پايان برساند مقدار بازگشتي يک عدد غير صفر و اگر تابع با خطايي مواجه شود مقدار بر گشتي صفر خواهد بود
hwnd : هندل پنجره مورد نظر
lpRect : اين بافر توسط تابع مقدار دهي مي شود و حاوي چهار چوب پنجره مورد نظر از نوع RECT خواهد بود
-------------------------------------------------------------------------------------------------
و تایع PaintDesktop
اين تابع از پس زمينه ويندوز يک کپي تهيه مي کند و آن رادر يک کنترل گرافيکي قرار مي دهد.
اگر تابع مقدار صفر را بر گرداند به منزلهء عدم موفقيت آن است و مقدار غير صفر نشانگر موفقيت تابع است.
hdc : اين متغير هندل کنترلي است که تصوير بايد در آن قرار بگيرد
نظرتون چیه ؟
سلام
مشکل من با این دو خط حل شد !!!!!
کد:Private Sub Command1_Click()
Dim ctl As Control
Printer.ScaleMode = 3
Printer.Scale (-100, 100)-(100, -100)
For Each ctl In Controls
If TypeOf ctl Is UserControl1 Then
Printer.Line (ctl.LineX1, -ctl.LineY1)-(ctl.LineX2, -ctl.LineY2), ctl.bordercolor
Printer.Line (0, 0)-(50, -50)
End If
Next
Printer.EndDoc
End Sub