PDA

View Full Version : سوال: گذاشتن عکس در پشت زمینه فرم mdi به زبان vb.net



shotor moo ferferi
یک شنبه 10 بهمن 1389, 18:46 عصر
:متفکر:
سلام به همگی. من این مشکل رو دارم که عکس بک گراند یا پشت زمینه در فرم mdi مشاهده نمی شود
هر چی هم که در سایت جستجو می کنم نتیجه نمی دهد.
پیشاپیش اگر سوال تکراری بود , معذرت می خواهم . لطفا اگر کسی بلد هست دریغ نفرماید.
مرسی:خجالت:

shotor moo ferferi
یک شنبه 10 بهمن 1389, 22:28 عصر
آقا یعنی کسی نمی تونه کمکم کنه؟
من کار فوری دارم.
دمتون گرم کمکم کنید خیر می بینید. هم در دنیا و هم در آخرت:کف:

ebrahimv
یک شنبه 10 بهمن 1389, 22:44 عصر
سلام
منم قبلا اين مشكل رو داشتم نميدونم از كجا بود البته تو مال من تصويري كه قبلا گذاشته بودم نميتونستم عوض كنم
اخر سر با كد تصوير رو عوض كردم

Parham.D
دوشنبه 11 بهمن 1389, 08:41 صبح
برای من که کار میکنه!!! زمان طراحی یا زمان اجرا؟

shotor moo ferferi
دوشنبه 11 بهمن 1389, 11:58 صبح
برای من که کار میکنه!!! زمان طراحی یا زمان اجرا؟

سلام دوست عزیز
در هر دو زمان , البته عکس من پسوند jpeg داره فکر کنم باید پسوند bmp داشته باشه , نظر شما چیه؟

shotor moo ferferi
دوشنبه 11 بهمن 1389, 12:00 عصر
سلام
منم قبلا اين مشكل رو داشتم نميدونم از كجا بود البته تو مال من تصويري كه قبلا گذاشته بودم نميتونستم عوض كنم
اخر سر با كد تصوير رو عوض كردم

آره منم قبلا شنیده بودم که با کد نویسی میشه درستش کرد. دنبال همون کد هستم. اگه دارید لطفا برام بذارید. مرسی:تشویق:

ebrahimv
دوشنبه 11 بهمن 1389, 13:04 عصر
Me.BackgroundImage = System.Drawing.Image.FromFile(Application.StartupP ath & "\pic\bg\Bg.jpg")

shotor moo ferferi
دوشنبه 11 بهمن 1389, 17:57 عصر
Me.BackgroundImage = System.Drawing.Image.FromFile(Application.StartupP ath & "\pic\bg\Bg.jpg")

دوست عزیز امتحان کردم ولی جواب نداد.
خودم یه کد پیدا کردم که جواب میده ولی حالا مشکلم اینه که عکس به شکل stretch در نمیاد:متفکر: البته هم در حالت کد نویسی و هم به صورت دستی خاصیت backgroundimagelayout رو برابر stretch گذاشتم ولی عمل نمی کنه
شما راه حلی ندارید؟

shahab2025
سه شنبه 12 بهمن 1389, 11:14 صبح
دوست عزیز امتحان کردم ولی جواب نداد.
خودم یه کد پیدا کردم که جواب میده ولی حالا مشکلم اینه که عکس به شکل stretch در نمیاد:متفکر: البته هم در حالت کد نویسی و هم به صورت دستی خاصیت backgroundimagelayout رو برابر stretch گذاشتم ولی عمل نمی کنه
شما راه حلی ندارید؟

لطفا کدتون را بزارید ما هم استفاده کنیم

hadi2345
سه شنبه 12 بهمن 1389, 12:30 عصر
با سلام ،‌ براي اينكه بتوني LayOut عكس پشت زمينه رو تغيير بدي كدي نديدم .



Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load

For Each ctl As Control In Me.Controls

If TypeOf ctl Is MdiClient Then

ctl.BackgroundImage = System.Drawing.Bitmap.FromFile("g:\a.jpg")

Exit For

End If

Next ctl

End Sub

shotor moo ferferi
سه شنبه 12 بهمن 1389, 14:12 عصر
با سلام ،‌ براي اينكه بتوني LayOut عكس پشت زمينه رو تغيير بدي كدي نديدم .



Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load

For Each ctl As Control In Me.Controls

If TypeOf ctl Is MdiClient Then

ctl.BackgroundImage = System.Drawing.Bitmap.FromFile("g:\a.jpg")

Exit For

End If

Next ctl

End Sub
آره دوست عزیز کد منم همینه ولی سایز عکس رو نمی تونم تغییر بدم!!:اشتباه: اگر تونستم راه حلی براش پیدا کنم میگم تا بقه استفاده کنن.
در ضمن در این روش عکس قرینه می شود که این خودش یه مشکل دیگه هست. ولی میشه از قبل عکس رو در برنامه هایی مثل office picture manager قرینه کنیم تا بعد از قرار گرفتن در فرم به حالت اصلیش نمایش داده بشه:بامزه:

ebrahimv
سه شنبه 12 بهمن 1389, 14:31 عصر
كد من كاملا كار ميكنه


Me.BackgroundImage = System.Drawing.Image.FromFile("مسير فايل")

البته بهتره كد رو در رويداد HandleCreated فرم بنويسي

shotor moo ferferi
چهارشنبه 13 بهمن 1389, 12:28 عصر
كد من كاملا كار ميكنه


Me.BackgroundImage = System.Drawing.Image.FromFile("مسير فايل")

البته بهتره كد رو در رويداد HandleCreated فرم بنويسي

نه با با بازم جواب نداد. خیلی عجیبه. البته من چیزای عجیب از وی بی دات نت کم ندیدم. اینم روش:ناراحت:

shotor moo ferferi
پنج شنبه 14 بهمن 1389, 11:56 صبح
بچه ها یه چیز عجیب دیگه کشف کردم:متعجب: عکسی که پس زمینه mdi می ذارم اول قرینه میشه بعدش که یه فرم رو باز می کنم و روی mdi با مواس می کشم عکس به حالت اولش بر می گرده و وقتی فرم mdi رو مینی مایز minimize می کنم و دوباره بر می گردونم عکس دوباره قرینه می شه . نمی دونم چه کار کنم!!!! کسی کمکم می کنه؟؟؟؟؟؟؟:گیج:

shotor moo ferferi
پنج شنبه 14 بهمن 1389, 21:26 عصر
باورم نمیشه این همه برنامه نویس باشن ولی یه نفر هم عکس پس زمینه فرم به این مهمی mdi نذاشته باشه!!!!!!!!!!!!
یعنی این قدر سخته که چند روزه جواب نگرفتم؟؟؟؟؟؟
من عکس می خوااااااااااااااااااااااا ااااااااااااام:گریه:

ebrahimv
جمعه 15 بهمن 1389, 02:47 صبح
باورم نمیشه این همه برنامه نویس باشن ولی یه نفر هم عکس پس زمینه فرم به این مهمی mdi نذاشته باشه!!!!!!!!!!!!
یعنی این قدر سخته که چند روزه جواب نگرفتم؟؟؟؟؟؟
من عکس می خوااااااااااااااااااااااا ااااااااااااام:گریه:
برنامت رو بزار تا ببينيم چشه
حتما يه چيزي رو درست انجام نميدي وگرنه هيچ مشكلي نداره

shotor moo ferferi
جمعه 15 بهمن 1389, 14:34 عصر
برنامت رو بزار تا ببينيم چشه
حتما يه چيزي رو درست انجام نميدي وگرنه هيچ مشكلي نداره

این کد ها رو تو رویداد load فرم mdi گذاشتم که خوشبختانه اجرا میشه
Dim c As Control
Dim Path As String = CurDir() & "\background.jpg"
backgroundBitmap = New Bitmap(Path)
For Each c In Controls
If TypeOf c Is MdiClient Then
AddHandler c.Paint, AddressOf PaintMyImage
Exit For
End If
Next
Me.Dock = DockStyle.Fill
Me.BackgroundImage = Image.FromFile(Path)
Me.BackgroundImageLayout = ImageLayout.Stretch

تو این کد یه روال رو فراخونی می کنه به اسم PaintMyImage که توش این کد نوشته شده:
e.Graphics.DrawImage(backgroundBitmap, 0, 0)
همون طور که گفتم این کدها عکس رو نشون میدن ولی در اندازه خود عکس که من هر چی تلاش کردم نتونستم اندازه عکس رو تغییر بدم. در ضمن عکس قرینه میشه و وقتی یه فرم دیگه روی mdi باز میشه و با مواس روی mdi گشیده میشه عکس به حالت اصلی (قبل از قرینه شدن) بر میگرده.
جالب اینجاست که وقتی فرم mdi رو minimize می کنم و دوباره بر می گردونم می بینم که عکس بازم قرینه میشه(مثل همون اول)
نمی دونم چه کار کنم. خیلی مهمه برام. باید خیلی ها بلد باشن , برام عجیبه فقط شما پیگیری می کنید.!!! بازم دم شما گرم:چشمک: منتظر جوابتون هستم

iman_22a
جمعه 15 بهمن 1389, 16:37 عصر
سلام . با توضیحات دوست عزیزمون توی پست 12 به شکل زیر ، من که مشکلی ندارم :


Private Sub frmMain_HandleCreated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.HandleCreated
Me.BackgroundImage = System.Drawing.Bitmap.FromFile("background.jpg")
Me.BackgroundImageLayout = ImageLayout.Stretch
End Sub

ebrahimv
شنبه 16 بهمن 1389, 01:14 صبح
ديدي گفتم كد من درسته
برنامشم برات فرستادم

shotor moo ferferi
شنبه 16 بهمن 1389, 01:47 صبح
دوستان فهمیدم مشکل کجاست !!!!!!!!! من تمام فرم هام خاصیت RightToLeft شون رو true کردم. به خاطر همین عکس رو نشون نمیده! البته نمی دونم چه ربطی به هم دارن. این موضوع رو با کمک دوست خوبم ebrahimv و برنامشون فهمیدم. شما هم امتحان کنید.
حالا با توجه به اینکه نمی خوام این خاصیت رو تغییر بدم باید چه کار کنم؟؟:متفکر:

شاپرک
دوشنبه 09 اسفند 1389, 15:05 عصر
با اين روش :

یک Panle در فرم اصلی قرار دهید و خاصیت Dock آن را برابر با Fill قرار دهید و عکس را به BackGround آن نسبت دهید.