PDA

View Full Version : سوال: ساخت عکس



AliRezaBeytari
دوشنبه 30 اردیبهشت 1392, 17:58 عصر
سلام به دوستان برنامه نویس.

شاید سوالم تکراری یا مبتدی باشد ولی من سرچ کردم و فقط در زبان #C به چیز هایی رسیدم.

من برنامه ای می خواهم درست کنم که تقریبا مانند Paint است ولی فرق هایی دارد.

من می خواهم بدانم چطور می توانم تعدادیی عکس را درون یک PictureBox قراربدم و آنها را SAVE کنم.

مثلا دو عکس را در برنامه ام لود کردم و مکان آن هارا در یک PictureBox دیگر مشخص کردم.حالا می خواهم آن هارا با هم سیو کنم.(در یک عکس)

..:: لطفا راهنمایی کنید ::..

kingdaniyal
سه شنبه 31 اردیبهشت 1392, 10:04 صبح
یعنی عکس اولی کنار عکس دومی قرار بگیره بعد داخل یک عکس سیو بشن؟

AliRezaBeytari
سه شنبه 31 اردیبهشت 1392, 12:40 عصر
یعنی عکس اولی کنار عکس دومی قرار بگیره بعد داخل یک عکس سیو بشن؟
بله.دقیقا.(فقط نمی خوام به هم دیگر بچسبند و از همدیگر فاصله داشته باشند.)

AliRezaBeytari
سه شنبه 31 اردیبهشت 1392, 13:10 عصر
چی شد؟!
کسی نمیدونه؟!؟!:عصبانی++::گریه:

AliRezaBeytari
سه شنبه 31 اردیبهشت 1392, 19:18 عصر
ای بابا پس چرا کسی جواب نمیده؟؟!!

h_a_m_i_d
چهارشنبه 01 خرداد 1392, 17:43 عصر
سلام دوست عزیز اگه در کار با عکس ها مشکل داری این پروژه رو دانلود کن خیلی کمکت میکنه
http://josephschwarz.com/ProjectFiles/NMSPaint.zip

AliRezaBeytari
چهارشنبه 01 خرداد 1392, 17:48 عصر
خیلی ممنونم ؛ ولی مشکل من یه جیز دیگر است!

h_a_m_i_d
چهارشنبه 01 خرداد 1392, 18:02 عصر
دوست عزیز توی اون سورس جواب همه سوالات هست کافیه یک نگاه دقیق بهش بندازی من مشکلت رو متوجه شدم الکی که سورس نمیدم به کسی
اگه وقت داشتم سورس رو بهت توضیح میدادم ولی شرمنده دیگه

AliRezaBeytari
پنج شنبه 02 خرداد 1392, 10:21 صبح
این سورسی که گذاشتین ، منو هایش کار نمی کنه. (Open , Save , New)

مهرداد صفا
جمعه 03 خرداد 1392, 11:38 صبح
با سلام.
ابتدا تابع زیر را تعریف کنید:

Public Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As IntPtr, ByVal nWidth As Integer, ByVal nHeight As Integer) As IntPtr

سپس با استفاده از متود Graphics.DrawImage تصاویر مورد نظر را روی کنترل رسم کنید.
حالا با استفاده از HDC کنترل مورد نظر یک HBitmap ساخته و آن را ذخیره می کنیم. به این صورت:

Drawing.Bitmap.FromHBitmap(CreateCompatibleBitmap(
PictureBox1.CreateGraphics.GetHDC,width,height)).s ave(fileName)


و یا ساده تر: فقط با استفاده از DrawImage تصاویر را رسم کنید و با استفاده از متود Control.DrawToBitmap قسمت مورد نظر را در یک Bitmap رسم کرده و ذخیره کنید.

AliRezaBeytari
جمعه 03 خرداد 1392, 12:52 عصر
با سلام.
ابتدا تابع زیر را تعریف کنید:

Public Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As IntPtr, ByVal nWidth As Integer, ByVal nHeight As Integer) As IntPtr

سپس با استفاده از متود Graphics.DrawImage تصاویر مورد نظر را روی کنترل رسم کنید.
حالا با استفاده از HDC کنترل مورد نظر یک HBitmap ساخته و آن را ذخیره می کنیم. به این صورت:

Drawing.Bitmap.FromHBitmap(CreateCompatibleBitmap(
PictureBox1.CreateGraphics.GetHDC,width,height)).s ave(fileName)


و یا ساده تر: فقط با استفاده از DrawImage تصاویر را رسم کنید و با استفاده از متود Control.DrawToBitmap قسمت مورد نظر را در یک Bitmap رسم کرده و ذخیره کنید.


خیلی از لطفتون ممنونم.
ول چون با تاحالا از این متود استفاده نکردم ، نمی دانم چطور باید از آن استفاده کنم.

اگر می شود سورس بگذارید.


بازم ممنونم!:قلب:

مهرداد صفا
جمعه 03 خرداد 1392, 13:17 عصر
خیلی از لطفتون ممنونم.
ول چون با تاحالا از این متود استفاده نکردم ، نمی دانم چطور باید از آن استفاده کنم.

اگر می شود سورس بگذارید.


بازم ممنونم!:قلب:


با سلام.
شبیه به کد زیر عمل کنید:

'in the name of god
'صل الله علی محمد و آله

Public Class Form1

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.WindowState = FormWindowState.Maximized
Me.BackColor = Color.Black

End Sub

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g As Graphics = e.Graphics
g.DrawImage(New Bitmap("e:\temp\temp3.jpg"), New Rectangle(0, 0, Me.Width \ 2, Me.Height))
g.DrawImage(New Bitmap("e:\temp\temp4.jpg"), New Rectangle(Me.Width \ 2, 0, Me.Width \ 2, Me.Height))
Dim Bitmap1 As New Bitmap(Me.Width, Me.Height)
Me.DrawToBitmap(Bitmap1, New Rectangle(0, 0, Me.Width, Me.Height))
Bitmap1.Save("e:\TEMP\TEMP5.jpg")



End Sub
End Class

AliRezaBeytari
جمعه 03 خرداد 1392, 13:47 عصر
این ارور رو میده :
104613

AliRezaBeytari
جمعه 03 خرداد 1392, 18:30 عصر
پس چی شد؟؟
کس نمیدونه؟؟!!