QT中用QPainter类所画图像随窗口变化自适应变化

Qpainter类是QT中的一个画图类。该类是用画笔在窗口上直接绘制图像。通常情况下,图像的位置和大小在画图完成后就是定死的了。在实际应用中我们有时需要该图像随着窗口的拖动、最大化等操作下进行自适应变化。下面提出两种可以使所画图像可以随窗口自适应变化的方法。

第一种方法,用Qpainter类中的scale函数。代码如下:

	QPainter painter(this);
	static double wid = rect().width();
	static double hei = rect().height();
	
	painter.setRenderHints(QPainter::Antialiasing, true);//抗锯齿
	
	double new_wid = rect().width()/wid;
	double new_hei = rect().height()/hei;
	painter.scale(new_wid,  new_hei);

具体思路就是先获取当前窗口的宽和高保存到两个double变量中。在窗口变化后,将变化后的宽和高与最开始的宽和高作比,作为scale函数的参数。scale函数的两个参数分别是在横向和纵向上实际坐标和绘图坐标的比例关系。在窗口没有变动时,两个参数分别为1,1,表示所画图像的大小就是你最开始画的大小。随着窗口的变大变小,图像也会随之等比例变化。该方法的缺点是,如果图像是圆且横纵向变化比例不同,会有失真的情况。我是这么解决的,加了行代码:
	double min = qmin(new_wid,new_hei);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值