c#如何将自己建立的一个Bitmap对象设置为桌面背景?
2013-09-04
展开全部
补充:总体思路是先保存位图到指定文件夹下(因为WIndows桌面必须是存在硬盘中的图片),然后使用注册表进行类型选择,如平铺,拉伸等,最后调用API实现指定图片变为桌面 我曾经做过这个功能,说穿了还是调API,我这里实现了平铺,拉伸等细节功能的选择,这个调用了注册表,希望对你有帮助,具体代码如下:[DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
public static extern int SystemParametersInfo
(
int uAction,
int uParam,
string lpvParam,
int fuWinIni
); /// <summary>
/// 设置为桌面墙纸
/// </summary>
public void SetWall(string mode)
{
//设置墙纸显示方式
using (RegistryKey myRegKey = Registry.CurrentUser.OpenSubKey(@"Control Panel\desktop", true))
{
if (mode == "居中")
{
myRegKey.SetValue("TileWallpaper", "0");
myRegKey.SetValue("WallpaperStyle", "0");
}
else if (mode == "平铺")
{
myRegKey.SetValue("TileWallpaper", "1");
myRegKey.SetValue("WallpaperStyle", "0");
}
else if (mode == "拉伸")
{
myRegKey.SetValue("TileWallpaper", "0");
myRegKey.SetValue("WallpaperStyle", "2");
}
}
//设置墙纸
Bitmap bmpWallpaper = ……这里bitmap具体哪来或者怎么画相信你一定会,不写了
bmpWallpaper.Save("D:\\resource.bmp", ImageFormat.Bmp); //图片保存路径为相对路径,保存在程序的目录下
string strSavePath = "D:\\resource.bmp";
SystemParametersInfo(20, 1, strSavePath, 1);
bmpWallpaper.Dispose();
}
public static extern int SystemParametersInfo
(
int uAction,
int uParam,
string lpvParam,
int fuWinIni
); /// <summary>
/// 设置为桌面墙纸
/// </summary>
public void SetWall(string mode)
{
//设置墙纸显示方式
using (RegistryKey myRegKey = Registry.CurrentUser.OpenSubKey(@"Control Panel\desktop", true))
{
if (mode == "居中")
{
myRegKey.SetValue("TileWallpaper", "0");
myRegKey.SetValue("WallpaperStyle", "0");
}
else if (mode == "平铺")
{
myRegKey.SetValue("TileWallpaper", "1");
myRegKey.SetValue("WallpaperStyle", "0");
}
else if (mode == "拉伸")
{
myRegKey.SetValue("TileWallpaper", "0");
myRegKey.SetValue("WallpaperStyle", "2");
}
}
//设置墙纸
Bitmap bmpWallpaper = ……这里bitmap具体哪来或者怎么画相信你一定会,不写了
bmpWallpaper.Save("D:\\resource.bmp", ImageFormat.Bmp); //图片保存路径为相对路径,保存在程序的目录下
string strSavePath = "D:\\resource.bmp";
SystemParametersInfo(20, 1, strSavePath, 1);
bmpWallpaper.Dispose();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询