核心代码分析
对目录中的文件操作
代码:
1. QDir picdir(dir);
2. QStringList filters;
3. filters << "*.bmp" << "*.jpg" << "*.png"<<"*.gif";
4. picdir.setNameFilters(filters);
5. QFileInfoList list = picdir.entryInfoList();
6. QFileInfo fileInfo = list.at(0);
7. QString path=fileInfo.filePath();
8. pixmap.load(path);
代码功能详解:毕业论文http://www.751com.cn/
第 1 行:定义了一个目录picdir和字符串列表filters,其中dir是一个字符串,记录的是目录的路径。
2到4行:到给filters添加内容,把目录中的后缀名为bmp、jpg、png、gif的所有文件名添加到filters列表中,然后给picdir目录设置文件名,这里的文件名就是字符串的列表中的文件名,这里的作用相当于选出目录中的图片,然后把图片名存在picdir目录中。
5到6行:定义QfileInfoList和QfileInfo两个对象list和fileInfo,QfileInfoList是一个文件信息列表,而QfileInfo则是信息列表中的一个文件信息。把目录中的所有文件的信息输入list中,并把第一个文件信息放在fileInfo中。这里的功能相当于定义一个列表把所有文件的信息放在里面,另外定义一个变量来存储要用到的文件信息。
7到8行:定义字符串path存储文件信息fileInfo的路径,然后用pixmap.load()函数来把图显示出来。
此段代码的作用是把目录的相关信息加到列表中,并定义一个信息文件来从列表中取出相应的文件信息,然后交给pixmap来画图。后面的上一幅、下一幅、旋转、放大、缩小等功能就纯是2D画图的事了,与文件相关信息就没关系了。原文请+QQ32,49114辣.文^论,文'网
画图事件
代码:
void RenderArea::paintEvent(QPaintEvent * /* event */)
{
QPainter painter(this);
if(trans!=0)
{
painter.translate(size().width()/2, size().height()/2);
painter.rotate( 90*(trans%4) );
painter.translate(-size().width()/2, -size().height()/2);
}
int x=( size().width()-(int)(pixmap.width()*w) )/2;
int y=( size().height()-(int)( pixmap.height()*h))/2;
painter.drawPixmap(x,y,(int)(pixmap.width()*w),(int)(pixmap.height()*h),pixmap,0,0,0,0);
}
这是一个画图事件,处理的事件有:旋转、放大、缩小和显示的功能。是用Qpainter类来实现,以下为代码作详细分析:
变量介绍:
Trans 记录第几次点击旋转按钮
pixmap.width() 加在画师中的图片的宽
pixmap.height() 加在画师中的图片的高
size().width() 底板的宽
size().height() 底板的高
w 图片宽放大的倍数
h 图片高放大的倍数
处理旋转代码:
if(trans!=0)
{毕业论文http://www.751com.cn/
painter.translate(size().width()/2, size().height()/2);
painter.rotate( 90*trans);
painter.translate(-size().width()/2, -size().height()/2);
}
用trans记录第几次点击旋转的按钮,如果有点击则trans不为0,我要实现的效果是点击一次则旋转90度,要用rotate(int angle)函数,里面的参数是旋转的度数,所以只需painter.rotate( 90*trans)就能实现点击一次在原来的基础上旋转90度。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]