PDA

View Full Version : قراردادن تصویر به عنوان والپیپر ویندوز



tamizi2
چهارشنبه 07 مهر 1389, 17:44 عصر
سلام
من با استفاده از دستور زیر میتوانم یک تصویر با پسوند bmp رو به عنوان والپیپر ویندوز قرار بدهم :

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "c:\TEST-FINAL.bmp", SPIF_UPDATEINIFILE)

ولی حجم تصویر با این فرمت بسیار سنگین میشود:متعجب:
میخواستم بدانم از چه طریقی و با چه دستوری میتوان یک تصویر با پسوند jpg و یا سایر پسوندها به عنوان تصویر زمینه ویندوز قرار داد ؟

mmd2009
چهارشنبه 07 مهر 1389, 19:23 عصر
با سلام

لینک زیر رو ببین

http://www.devasp.net/net/articles/display/421.html

tamizi2
پنج شنبه 08 مهر 1389, 05:58 صبح
با تشکر از شما
متاسفانه این نمونه برنامه هم تصویر را به bmp تبدیل میکند و بعد به عنوان پشت زمینه قرار میدهد !! :ناراحت:
img.Save(imageLocation, System.Drawing.Imaging.ImageFormat.Bmp)

راه حل دبگری باید وجود داشته باشد

tamizi2
جمعه 09 مهر 1389, 07:26 صبح
خود ویندوز از چه راهی تمام پسوندها رو قبول میکنه ؟
APIخاصی داره ؟
ممکنه ویندوز هم اتصاویر رو به bmp تبدیل کنه و بعد بزاره تو بک گرند ؟

mmd2009
جمعه 09 مهر 1389, 08:08 صبح
نه دوست عزیز

من یک برنامه نوشته بودم با سی شارپ که هر پسوندی رو میکرد والپیپر. پس فرقی نداره با vb

سعی میکنم برنامشو تبدیل کنم به vb برات بذارم اگر تو هاردم پیداش کردم

محسن شامحمدی
جمعه 09 مهر 1389, 09:25 صبح
متاسفانه این نمونه برنامه هم تصویر را به bmp تبدیل میکند
دوست عزیز شاید برایتان جالب باشد که خود ویندوز هم تصاویر را ابتدا به bmp تبدیل کرده و بعد wallpaper می کند
هر فایلی را که به عنوان والپیپر قرار دهید در این آدرس می رود


C:\Documents and Settings\Your User\Local Settings\Application Data\Microsoft\Wallpaper1.bmp
در واقع تلاش شما برای set کردن تصویر غیر bitmap اشتباه است.

sari-1369
جمعه 09 مهر 1389, 11:11 صبح
احتمالا این نمونه برنامه میتونه کمکتون کنه .

tamizi2
جمعه 09 مهر 1389, 14:21 عصر
نه دوست عزیز

من یک برنامه نوشته بودم با سی شارپ که هر پسوندی رو میکرد والپیپر. پس فرقی نداره با vb

سعی میکنم برنامشو تبدیل کنم به vb برات بذارم اگر تو هاردم پیداش کردم

دستتون درد نکنه، بی صبرانه منتظرم :قلب:
حتی اگه براتون زحمت میشه که تبدیل کنید همین طوری هم بدید بهم میدم به یکی از دوستانم زحمت تبدیلش رو بکشه
ممنون




دوست عزیز شاید برایتان جالب باشد که خود ویندوز هم تصاویر را ابتدا به bmp تبدیل کرده و بعد wallpaper می کند
هر فایلی را که به عنوان والپیپر قرار دهید در این آدرس می رود

در واقع تلاش شما برای set کردن تصویر غیر bitmap اشتباه است.

خودمم یواش یواش داشتم به این نتیجه میرسیدم
کلی اینترنت گردی کردم اصلا راه حلی پیدا نکردم :عصبانی++:




احتمالا این نمونه برنامه میتونه کمکتون کنه .

بابت معرفی این برنامه متشکرم
ااین برنامه را به همراه یکی دو نمونه دیگه دانلود کرده بودم
ورژن وی بی من 2005 هستش و گویا این برنامه با ورژنی بالاتر نوشته شده
چون قادر به باز کردن کد برنامه نیستم :گریه:

sari-1369
جمعه 09 مهر 1389, 14:58 عصر
کدش اینه .

Imports System.Runtime.InteropServices
Imports System.Net
Imports System.Drawing.Imaging.ImageFormat
Imports System.IO
Imports Microsoft.Win32

Public Class Class1

Private Const SPI_SETDESKWALLPAPER As Integer = 20
Private Const SPIF_UPDATEINIFILE As Integer = &H1
Private Const SPIF_SENDWININICHANGE As Integer = &H2

<DllImport("user32.dll", CharSet:=CharSet.Auto)> _
Shared Function SystemParametersInfo(ByVal uAction As Integer, ByVal uParam As Integer, ByVal lpvParam As String, ByVal fuWinIni As Integer) As Integer
End Function

Public Enum Style As Integer
Stretched
End Enum

Public Shared Sub [Set](ByVal F_path As String, ByVal style As Style)
Dim a As Stream = New WebClient().OpenRead(F_path)
Dim i As System.Drawing.Image = System.Drawing.Image.FromStream(a)
Dim tempPath As String = Path.Combine(Path.GetTempPath(), "wallpaper.bmp")
i.Save(tempPath, Bmp)
Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
key.SetValue("WallpaperStyle", 2.ToString())
key.SetValue("TileWallpaper", 0.ToString())
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, tempPath, SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)
End Sub
End Class

mmd2009
جمعه 09 مهر 1389, 17:19 عصر
دوست عزیز شاید برایتان جالب باشد که خود ویندوز هم تصاویر را ابتدا به bmp تبدیل کرده و بعد wallpaper می کند
هر فایلی را که به عنوان والپیپر قرار دهید در این آدرس می رود

در واقع تلاش شما برای set کردن تصویر غیر bitmap اشتباه است.

من خیلی وقت پیش پرسیدم تو stack.... و گفتن اگر ویندوز ساپورت بکنه jpg رو مشکلی نداره.

میشه شما هم منبعتون رو بگید

موفق باشید

tamizi2
شنبه 10 مهر 1389, 05:36 صبح
دوست من بابت قراردادن نمونه کد واقعا ممنون
متاسفانه این برنامه هم تصویر را به bmp تبدیل می کند و سپس به عنوان بک گرند قرار میدهد :

i.Save(tempPath, Bmp)


بازهم ممنون

mmd2009
شنبه 10 مهر 1389, 07:01 صبح
دوست عزیز اگر ویندوزیت XP یا 2000 یا server هست که کلا هر چی گفتیم تا الان بیخود بوده.

حالا ویندوزت چی هست ؟

محسن شامحمدی
شنبه 10 مهر 1389, 08:35 صبح
پاسخ آقا مجتبی mmd2009 (http://barnamenevis.org/forum/member.php?u=115786)

من خیلی وقت پیش پرسیدم تو stack.... و گفتن اگر ویندوز ساپورت بکنه jpg رو مشکلی نداره.متاسفانه منظورتون رو متوجه نمی شم یعنی اگر windows xp استفاده کنیم که پسوند jpg رو ساپورت کنه اون فایلی که گفتم پسوندش می شه jpg. مسلما جواب منفیه.

C:\Documents and Settings\Your User\Local Settings\Application Data\Microsoft\Wallpaper1.bmp

میشه شما هم منبعتون رو بگیدبه نظر من نیازی به منبع نیست. لطفا یک دفعه خودتون امتحان کنید:
یک تصویر برای زمینه دسکتاپتون بزارید.(البته در اکس پی اینطوریه)
حالا به این آدرس برید

C:\Documents and Settings\Your User\Local Settings\Application Data\Microsoft\Wallpaper1.bmpمی بینید که اگر فایل شما هر پسوندی که داشته حالا پسوندش شده bmp
راستی اینجا در مورد اینکه ویندوز اول عکس ها رو به bmp تبدیل می کنه قبلا بحث شده (http://www.msfn.org/board/topic/35128-getting-rid-of-wallpaper1bmp/)و در آخر به این نتیجه رسیدن که اصلا نمی شه تصویر غیر bmp به عنوان زمینه قرار بگیره.(حتی اگر png هم بذارید باز می شه bmp :لبخند:)
با تشکر

mmd2009
شنبه 10 مهر 1389, 15:46 عصر
نه منظور من ویندوز XP نبود. خودم که بالا گفتم ویندوز xp اصلا ساپورت نمیکنه

tamizi2
یک شنبه 11 مهر 1389, 07:49 صبح
من ویندوزم ایکس پیه !
یعنی برنامه ای هم که می نویسم برای xp هست
پس به این نتیجه رسیدم که در ویندوز xp تصاویر به bmp تبدیل میشن و بعد به عنوان بک گرند قرار می گیرند.
دوستان از راهنمایی و کمک همتون ممنونم مخصوصا قای mmd2009 (http://barnamenevis.org/forum/member.php?u=115786) و 09111111111 (http://barnamenevis.org/forum/member.php?u=59254)
این مطلب رو برای دوستان دیگه ای که ممکنه بعدا این سوال براشون پیش بیاد می نویسم :
در ویندوز xp ابتدا تصاویر به bmp تبدیل و سپس به عنوان بک گرند قرار میگیرد.
موفق باشید