前几天,因为工作关系,由于鄙人交懒,记忆较差,所以便向同事要一款日程管理软件。可以内嵌在桌面中的,同事便推荐了一款蓝果软件,便下载了一个,试了试还不错。刚好,他的原理比较简单,自己便用qt自己做了一个玩。其实其软件整个思路挺简单的:
一、步骤:
1、将要写的内容写在一张图片上
2、再将图片设置为壁纸。
3、OK。
下图为下载的蓝果软件主界面
下图为鄙人自己做的,有些丑。。。呵呵
二、出现的一些未解决问题
1、在配置文件中中文读取。不难解决
2、在不同图片中字体的大小不同,如上图中字体要达到999写在图片上才能看的见,为明白。。。求解
3、只是实现了bmp格式的,其他格式有时间再完成。
三、主要部分代码
其实代码很简单,就只显示主要代码了。有兴趣的童鞋自己好好思考怎么改善的更好哈。
QSettings appSettings("HKEY_CURRENT_USER\\Control Panel\\Desktop",QSettings::NativeFormat);
appSettings.setValue ("WallpaperStyle", "2");//ping pu
直接改注册表,来将壁纸属性设为拉伸,有api接口可以去完成,但是太麻烦,没有这样直接
QString src = des;
QSettings appSettingss("HKEY_CURRENT_USER\\Control Panel\\Desktop",QSettings::NativeFormat);
appSettingss.setValue ("Wallpaper", src);//xie ru zu ce biao
QByteArray ba = src.toAscii();
int www = SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0,(void*)ba.data(),SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);//set backgroud
设置壁纸,可以去查SystemParametersInfoA这个接口
在图片上添加文字内容
QImage image = QPixmap(filename).toImage();
QPainter painter(&image);
painter.setCompositionMode(QPainter::CompositionMode_Source);
QPen pen = painter.pen();
pen.setColor(color);
painter.setPen(pen);
painter.setFont(font);
QString str = ui.textEdit->toPlainText();
QRectF r = QRectF(QRect(left, top, 10000, 10000));
painter.drawText(r,/* Qt::AlignCenter,*/ str);
QFile::remove(des);
if(!image.save(des, "bmp"))
{
QMessageBox msgBox;
msgBox.setText(tr("转换失败,请重试!!!"));
msgBox.exec();
}
整个软件的核心部分就是上面2步,代码太简单了,就不传了,时间仓促,就这样了吧。那几个问题知道的可以给我说说啊。希望对有兴趣的童鞋有帮助。