夸脱实现涂鸦板二:实现放大功能
在一的基础上改造:h文件
#pragma一次
#包含QtWidgets/QWidget
#包含' ui_xuexi.h '
#包含" QMouseEvent "
#包含" QKeyEvent "
#包括“QPainter”
#包括qbutton '
习雪:级公共QWidget
{
Q_OBJECT
公众号:
习雪(QWidget * parent=Q _ NULLPTR);
void MousePresent(QMouseEvent * e);//按下
void MousemoveEvent(QMouseEvent * e);//移动
void mouseReleaseRvent(QMouseEvent * e);//释放
void paint事件(qpaint事件*);
公共槽3360
void zoomIn();//放大
私人:
Ui:xuexiClass ui
QPixmap pix
QPoint lastPoint
QPoint endPoint
整数标度;//放大倍数
q按钮*按钮;
};卡片打印处理机(卡片打印处理器的缩写)文件
#包括习雪。h
学习机:习雪(QWidget *家长版)
: QWidget(父)
{
ui。setupui(这个);
调整大小(600,500);
pix=QPixmap(200,200);
pix。填充(Qt :白色);
比例尺=1;
按钮=新的qbutton(' zoomIn ',this);
按钮移动(500,450);
连接(按钮、信号(点击())、此、插槽(zoomIn()));
}
void徐希:3360 mousepresevent(QMouseEvent * e)
{
if(e-button()==Qt :左按钮)
{
最后一点=e-pos();
}
}
void徐希:3360 mousemoveevent(qmouseeevent * e)
{
if(e-button()==Qt :左按钮)
{
endPoint=e-pos();
update();
}
}
void徐希:3360 moussereleaservent(Qmouseevent * e)
{
if(e-button()==Qt :左按钮)
{
endPoint=e-pos();
update();
}
}
作废徐希:油漆事件(Qpaint事件*)
{
//第一种:效果差点
/* Qpainter PP(pix);
pp.drawLine(lastPoint/scale,EndPoint/scale);
lastPoint=endPoint
QPainter画师(本);
画家。比例尺(比例尺,比例尺);
画家。绘制位图(0,0,pix);*/
//第二种:效果更好
如果(规模!=1)
{
QPixmap copyPix(pix。size()* scale);
QPainter pter(复制pix);
比例尺(比例尺,比例尺);
彼得。绘制位图(0,0,pix);
pix=copyPix
比例尺=1;
}
qpenger PP(pix);
pp.scale(标度,标度);
pp.drawLine(lastPoint/scale,EndPoint/scale);
lastPoint=endPoint
QPainter画师(本);
画家。绘制位图(0,0,pix);
}
void xuexi:zoomIn()
{
比例尺*=2;
update();
}
这里的放大,写了两种实现方法:
方法一:将涂鸦后的图片放大,这样虽然可以实现,但是放大后,像素个数就表少了,画质就变差了,效果不是很好。
方法二:是将画布放大,这样像素个数不会变少,画质就高些,效果更好
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/70028.html