BlackBerry - 在屏幕上绘制图像
如何在屏幕上绘制特定大小和位置的png图像?
How to draw png images with specific size and position on the screen?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何在屏幕上绘制特定大小和位置的png图像?
How to draw png images with specific size and position on the screen?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
调整图像大小
该函数将在下面的代码中使用。
简单地绘制图像
简单地绘制图像 http://img268.imageshack.us/img268/9918/ bb8310.png
让我们以表格方式绘制 9 个图像,图像大小不同,但我们将它们调整为 80x80 并给它们边距 10 像素。
假设您的项目资源中有 9 张 png 图像。
代码:
简单绘制图像 - 优化
看一下 Scr 的 Paint() 方法。每次刷新时,整个图像表都会重新绘制,这意味着每次绘制都会调用 9 个drawImage。如果我们只获取该表的快照并在 Paint() 方法中使用它会怎么样?
您可以进一步优化它,使用paintBackground()方法
使用BitmapField
以上都是关于使用图形。有时它很棒 - 当您想要显示一些动画或背景图像时。但是,如果您想保持标准的 UI 用户体验并使用图像作为字段怎么办?
替代文本 http://img142.imageshack.us/img142/7485/bb83102.png< /a>
海峡的方式是 BitmapField
使用 BitmapField - 自定义布局
替代文本 http:// img9.imageshack.us/img9/403/bb83103.png
要在管理器中设置 BitmapFields 的自定义位置,您可以实现 具有自定义布局的管理器:
Resize image
This function will be used in the code below.
Simply painting images
Simply painting images http://img268.imageshack.us/img268/9918/bb8310.png
Lets paint 9 images in a table way, images are different in size, but we will resize them to 80x80 and give them margins 10 px.
Assuming you have 9 png images in your project resources.
Code:
Simply painting images - optimization
Take a look at paint() method of Scr. On every refresh the whole table of images is repainting, that means 9 drawImage call on every paint. What if we just take a shapshot of this table and use it in paint() method?
You can otimize it even more, using paintBackground() method
Using BitmapField
All above is about painting images directly to screen using Graphics. Sometimes its great - when you want to display some animation or background image. But what if you want to keep standard UI user experience, and use images as a fields?
alt text http://img142.imageshack.us/img142/7485/bb83102.png
The strait way is a BitmapField
Using BitmapField - custom layout
alt text http://img9.imageshack.us/img9/403/bb83103.png
To set a custom positions of BitmapFields within manager, you can implement manager with custom layout:
在初始化函数中的某处:
以及在画布的绘制函数中:(
其中 g 是从绘制函数获得的 Graphics 对象)
编辑:修复了注释中指出的小错误
Somewhere in an initialization function:
And in the paint function of your canvas:
(where g is the Graphics object you get from the paint function)
edit: fixed small error as pointed out in comments
如果您使用 net.rim.device.api.system.PNGEncodedImage 或从 net.rim.device.api.system.EncodedImage 扩展的其他类之一,您可以使用 scaleImage32(int scaleX, int scaleY) 方法(在操作系统中可用) 4.2 及更高版本)将图像缩放到您想要的尺寸。请注意,虽然scaleX和scaleY虽然输入为int,但实际上是net.rim.device.api.math.Fixed32,因此以一半大小显示图像:
或者对于两倍原始大小的图像:
If you use net.rim.device.api.system.PNGEncodedImage or one of the other classes extended from net.rim.device.api.system.EncodedImage you can use the scaleImage32(int scaleX, int scaleY) method (available in OS 4.2 and latter) to scale the image to the size you want. Be aware though that scaleX and scaleY, though typed as int are actually net.rim.device.api.math.Fixed32 so to display the image at one half size:
Or for an image twice original size:
在这里您可以根据需要更改设备宽度和高度。
Here you can change deviceWidth and height as your requirement.