android不同版本 分辨率不一样,同一图片测出的长和宽也不一样!获取屏幕的宽和高

    今天利用canvas.drawBitmap方法画图片的时候发现一个问题,用2.1版本做的时候是居中显示的,

后来用2.2的时候却发现同样的图片,却不能居中显示了。我看了,用的是同一图片,后来想了想,估

计是与版本有关系,于是就测了下,发现同样的测试代码,在2.1版本测出屏幕长和宽为533*320图片

的长和宽为480*320,2.2版本测出屏幕长和宽为800*480图片的长和宽为720*480.

    看到这个结果我恍然大悟了,因为我的代码里是把屏幕的宽度和高度统一写死为480*320,图片的

坐标是由屏幕和图片的宽和高共同决定的,所以导致了这个结果。代码大概如下:

Paint paint = new Paint();  //画笔

int screenWidth=480;   //屏幕宽度
int screenHeight=320; 
 //屏幕高度 

Bitmap bm = BitmapFactory.decodeResource(activity.getResources(), R.drawable.bnkjs);//图片

currentX=screenWidth/2-bm.getWidth()/2;  //图片的X坐标

currentY=screenHeight/2-bm.getHeight()/2; //图片的Y坐标

canvas.drawBitmap(bm, currentX, currentY, paint);


后来把屏幕的宽度和高度修改为获取当前屏幕的宽度和高度后就可以正常居中显示了,代码如下:


Paint paint = new Paint(); //画笔

int screenWidth=wm.getDefaultDisplay().getWidth();   //屏幕宽度
int screenHeight=wm.getDefaultDisplay().getHeight();  //屏幕高度

Bitmap bm = BitmapFactory.decodeResource(activity.getResources(), R.drawable.bnkjs);//图片

currentX=screenWidth/2-bm.getWidth()/2; //图片的X坐标

currentY=screenHeight/2-bm.getHeight()/2; //图片的Y坐标

canvas.drawBitmap(bm, currentX, currentY, paint);



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在PyQt中,可以使用QSizePolicy来设置控件的大小策略,以便在窗口大小改变时自动调整控件的大小。同时,可以在QSS中使用相对大小单位例如%和em来指定控件的大小,而不是使用固定的像素值。 以下是一个简单的示例,演示如何设置控件的大小策略并在QSS中使用相对大小单位: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QHBoxLayout from PyQt5.QtCore import Qt class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 创建标签 lbl = QLabel('Hello World!', self) lbl.setAlignment(Qt.AlignCenter) # 创建水平布局 hbox = QHBoxLayout() hbox.addWidget(lbl) self.setLayout(hbox) # 设置标签的大小策略为"MinimumExpanding" sizePolicy = lbl.sizePolicy() sizePolicy.setHorizontalPolicy(QSizePolicy.MinimumExpanding) sizePolicy.setVerticalPolicy(QSizePolicy.MinimumExpanding) lbl.setSizePolicy(sizePolicy) # 加载QSS样式表 with open('style.qss', 'r') as f: self.setStyleSheet(f.read()) # 显示窗口 self.setGeometry(100, 100, 300, 200) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 在上面的示例中,我们创建了一个标签,并将其大小策略设置为"MinimumExpanding"以使其自动扩展。然后,我们加载了一个QSS样式表,并在其中使用了相对大小单位。在这个样式表中,我们将标签的宽度设置为父控件的80%,将度设置为父控件的60%。这意味着无论窗口的大小如何改变,标签的大小都会自动调整以保持其相对大小不变。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值