View Full Version : سوال: ذخیره نقاشی رسم شده روی فرم .؟
sari-1369
شنبه 03 اسفند 1387, 01:21 صبح
سلام دوستان .
من با دستورات :
Dim g As Graphics
g.Clear(Form1.BackColor)
g.DrawRectangle(Pens.Red, Form1.x, Form1.y, Form1.x2 - Form1.x, Form1.y2 - Form1.y)
یه سری شکل روی فرم می کشم . حالا می خوام انو به صورت یه عکس در بیارم . ( هم انداره فرم )
از دستور :
Dim b2 As System.Drawing.Rectangle
b2.X = 0
b2.Y = 0
b2.Width = Me.Width
b2.Height = Me.Height
Dim b As New Bitmap(Me.Width, Me.Height)
Me.DrawToBitmap(b, b2)
PictureBox1.Image = b
استفاده کردم ، از هر چیزی که روی فرم هست عکس میگیره ، الا اونایی که با دستور اولی رسم کردم . ( مستطیل )
پروژه رو هم ضمیمه کردم ( یه خورده قاطی پاتیه )
پیشاپیش از همه ممنونم .
mostafaaa
شنبه 03 اسفند 1387, 10:39 صبح
سلام دوست من
از اين استفاده كن
Public Function FormScreenShot() As Bitmap
Dim Bit As New Bitmap(Me.Width, Me.Height)
Dim G As Graphics = Graphics.FromImage(Bit)
G.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Bit.Size)
Return Bit
End Function
sari-1369
شنبه 03 اسفند 1387, 17:14 عصر
ویرایش شد ...
sari-1369
شنبه 03 اسفند 1387, 20:05 عصر
آقا بابت این کد دستت درد نکنه .
من فکرایی که تو سرم بود ، نتونستم پیاده کنم .
واست میگم ، ببین شدنیه ؟
من می خوام هر دفعه که کاربر روی لیبل ( تو سوال قبل فرم بود ، لیبل گرفتم که راحت تر باشه ) یه شکلی رو رسم میکنه ، وقتی موس رو ول میکنه ( mouseup ) یه عکس از اون لیبل بگیره و به عنوان بگراند ایمیج همون لیبل قرار بده . که وقتی کاربر می خواد شکل بعدی رو رسم کنه ، قبلی حذف نشه .
که واسش این کد رو نوشتم . ( ولی کار نمیکنه ، یعنی هر دفعه که شکل جدید رسم میکنم کلا بکگراند ایمیج قبلی میپره )
Public Function FormScreenShot() As Bitmap
Dim Bit As New Bitmap(lbl.Width, lbl.Height)
Dim G As Graphics = Graphics.FromImage(Bit)
G.CopyFromScreen(Me.Location.X + 90, Me.Location.Y + 38, 0, 0, Bit.Size)
Return Bit
End Function
Private Sub lbl_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lbl.MouseUp
Me.lbl.BackgroundImage = FormScreenShot()
End Sub
و تو هر دفعه رسم شکل می خوام عکسی که از لیبل گرفته شده رو تو یه آرایه از نوع Bitmap بریزم که قابلیت Undo رو به برنامه اضافه کنم .
امیدوارم منظورمو خوب رسونده باشم .
در ضمن ، فایل پروژه رو هم تو همین پست ضمیمه کردم .
shask00l
شنبه 03 اسفند 1387, 22:23 عصر
دوست عزیز ... چرا اشکال رو بصورت برداری ذخیره نمیکنی .؟ اینجوری هم حجمشون کمتر میشه هم کار کردن باهاشون راحت تره .
mostafaaa
شنبه 03 اسفند 1387, 22:43 عصر
سلام دوست عزيز
گل پسر توي اون تاپيك قبلي كلاسي كه برات نوشته بودم خوب همين كار رو ميكرد ديگه ، چه كاريه آخه از فرم عكس بگيريم ، چرا لقمه رو دور سرت ميگردوني؟؟!
اين رو نگاه كن با موس ميتوني 1000 تا دايره روي فرم بكشي و هيچكدوم هم از بين نميره!!
sari-1369
شنبه 03 اسفند 1387, 23:59 عصر
پس بی زحمت در مورد کد خودت توضیح بده .
من سر در نیووردم ، چطوری شکل های کشیده شده رو نگه می داری ؟؟
mostafaaa
یک شنبه 04 اسفند 1387, 10:23 صبح
سلام دوست من
همونطور كه اون دوستمون هم گفتن بهترين راه اينه كه شكلها رو پس از رسم كردن ، بصورت برداري ذخيره كنيم.
در رويداد MousUp همون كلاس كه واست توي تاپيك قبلي گزاشته بودم از همين روش استفاده كردم !!
يا علي
sari-1369
یک شنبه 04 اسفند 1387, 12:32 عصر
ببین دوست عزیز . این برنامه یه پروژست که من باید تو قالب کلاس های abstract تحویل بدم .
در مورد ذخیره برداری هم اطلاغاتی ندارم ، راهنمایی کن plz .
mostafaaa
یک شنبه 04 اسفند 1387, 12:45 عصر
سلام دوست من
ببین دوست من شما برای کشیدن یه دایره روی فرم به حداقل 4 آرگومان زیر نیاز داری :
X
Y
Width
Height
که از نوع Single میتونن باشه شما با ذخیره این چهار مقدار برای هر دایره میتونی اون رو درست به همون شکل و در همون مکان قبلی بکشی!
شما بعد از کشیدن هر دایره و توی رویداد MouseUp میتونی این مقادیر رو ذخیره کنی و هر بار خواستی شکل جدیدی بکشی اینها رو همراه اون شکل جدید دوباره رسم کنی.
e.Graphics.DrawEllipse(Pens.Black, X, Y, Width, Height)
یا علی
sari-1369
یک شنبه 04 اسفند 1387, 20:55 عصر
سلام :لبخند:
2 تا سوال ساده ( البته واسه شما )
چطوری آرایه رو با طول نامحدود تغریف کنم ؟
mostafaaa
یک شنبه 04 اسفند 1387, 21:45 عصر
سلام دوست من میتونی از ArrayList یا Generic ها استفاده کنی!
Dim List As New ArrayList 'OR Dim List As New List(Of YourType)
sari-1369
دوشنبه 05 اسفند 1387, 00:32 صبح
بازم مزاحم همیشگی اومد . :خجالت:
من هرچی گشتم نتونستم brush رو پیدا کنم . میشه بگی چطوری میشه رسمش کرد ؟
و سوال دیگه اینکه . برای ذخیره این label به صورا یه عکس jpg | gif | png | ... چیکار کنم ؟؟
sari-1369
سه شنبه 06 اسفند 1387, 01:26 صبح
کسی نیست کمکم کنه ؟؟؟ :گریه:
sari-1369
چهارشنبه 07 اسفند 1387, 14:42 عصر
کسی نیست سوال 13 رو جواب بده ؟؟
راستی کسی آیکون های ، قلم ، قلمو ، سطل رنگ واسه ماوس نداره ؟
shask00l
شنبه 10 اسفند 1387, 23:40 عصر
راستی کسی آیکون های ، قلم ، قلمو ، سطل رنگ واسه ماوس نداره ؟
از resource های خود برنامه paint ویندوز بردار .
sari-1369
یک شنبه 11 اسفند 1387, 01:00 صبح
از resource های خود برنامه paint ویندوز بردار .
مسیرش کجاست ؟؟
shask00l
یک شنبه 11 اسفند 1387, 23:01 عصر
:افسرده:
%SystemRoot%\system32\mspaint.exe
sari-1369
یک شنبه 11 اسفند 1387, 23:24 عصر
این که فایل اجراییشه ...
shask00l
دوشنبه 12 اسفند 1387, 07:25 صبح
این که فایل اجراییشه ...
resource ها به همراه فایل اجرایی ذخیره میشن .
:متفکر: آقا چرا بیخودی خودتو میپیچونی .؟ اگه دنبال ایکون میگردی برو تو گوگل سرچ بزن .
http://images.google.com/images?hl=en&q=paint+icon&btnG=Search+Images&gbv=2
2.290.000 نتیجه .!
علاوه بر این میتونی از ایکون ها هم عکس بگیری و بصورت آیکون برا خودت ذخیره کنی .
به کد برنامه توجه کن . نه به قیافش . قیافه رو بعدا میشه درست کرد . ولی اگه پایه برنامه رو بد بریزی . ............. ولش.!
sari-1369
دوشنبه 12 اسفند 1387, 15:40 عصر
میدونم چی میگی :لبخند: اون پستو زده بودم که تایپیک بیاد بالا :لبخند:
حالا کسی نیست در مورد سوالای قبلی کمک کنه ؟؟ :ناراحت:
vBulletin® v4.2.5, Copyright ©2000-1402, Jelsoft Enterprises Ltd.